I don’t understand the problem here. You need only one make_foo for all methods of foo because foo dispatches.
make_foo
foo