Revised the higherarchy and made changes to the interfaces and abstract classes