May be this will sound stupid but why aren't the getInstance methods implemented directly in the abstract classes of the various Singletons (for example inside ControllerTemplate) ? What are the reasons one would need a custom implementation of this ? And in such cases, overriding the default implementation would always be possible...