tests written and passing