I agree overwriting at the end isn't ideal, but I don't think allowingreturns at module level is a significant improvement. I'd rather see a
higher level approach that specifically set out to tackle the problem
of choosing between multiple implementations of a module at runtime
that cleanly supported *testing* all the implementations in a single
process, while still having one implementation that was used be
default.