Core functionality complete

Next step, work on design and add better documentation to code