added all methods and test (toString need to be fixed)