the idea is:
1. register all things, last registration wins if it isn’t something that could have been accessed already (like setting a singleton without a factory)
2. after all registrations, start accessing things, and a singleton will be the same for everyone