added more classes and test cases