adding new classes and test implementation