reconfigured program into a class - to allow for programmatic use of the module.
Merge remote-tracking branch 'origin/master'