Adding spec, with flow chart, requirements, unittest, and other stuff