more work on it
more tests passing