#55 all works, need lots of tests
Merge