initial commit
more tests
nearly
passing tests
tidied up