add EmptyType
add HierarchyGenerators
add TypeTraits
add AbstractFactory