Future Improvements: -All services template classes are currently instantiated for all ModelDefs (the templated code is generated for each ModelDef) -Even if ModelDefs are incompatible for a given service. E.g, a pure physics ModelDef with no Simulation still has the TLocalInputServicecode instantiated. -To be clear: it does not instantiate an instance ofTLocalInputServiceat runtime, but the code is generated and almost certainly cannot be culled by the compiler. -Concepts could be used to determine if ModelDefs are compatible with Services and we could avoid the template code instantiation. -This would add more template machinery, and basically requires all TServicebe hidden behind SFINAE walls. E.g, Factories for instantiating and CallOrNot for Register/Unregister. -Its not clear if its worth the effort at this point. In practice there should be relatively few ModelDefs that would benefit from this. -But it could make a difference in some cases for build time and exe size