added tests for everything and passing