first commit
I think this is now ready for tests