added new classes and interfaces