made all tests so far pass