TemplateFreeWorld - replacing compile time polymorphism with runtime pol...

...ymorphism
Again I think the caller should make the unique_ptr if they want it.