Translated the UML diagram to code. Additional ( absolute necessary )
documentation follows ....
Merge remote-tracking branch 'origin/master'