Fixed the hierarchy

Over hauled the hierarchy and added in polymorphism