newModel, replaced abstract classes with interfaces.
started with methods in interfaces