WIP - doesn't support sharing instances yet - rest of code looks good

tests also needed
Hit initial goals minus testing. Should be usable.
First release - 0.1.0