added implementations of all classes, tests needed