Update 4 Dec 2014, should be ready for hand in once the unit testing is done