Added new classes and unit tests