add methods and tests to pass