Finish test cases
Separate classes; more refactoring