More tests added & separation of classes

- separated the classes for easier maintenance
- added more test cases