Implemented and unit tested V1.0 Sep 6, 2014