#22, implementing base classes and interfaces
#22, added new base classes and interfaces