Renamed few classes, added tests, added Transaction