added all tests
added latest version of tests and refactored some classes