working on initial architecture and tests