Complete Solution

Commented, bug fixes, new functionality, unit tests, documentation