First version

(Planned clean up and documentation)