Added an abstract class to define a type object
Refactor of namespaces