Add a whole lot of work done prior to bringing the project to Github

This resolves issue #2.

This resolves issue #3 (as far as I can tell).