finished basic functionality with unit tests, not ready for publishing just yet, but it writes to and reads from the blockchain