Initial rewrite
First draft of version 2, all unit tested
ignore node_modules