Added abstract classes and interfaces