Class complete, code commented and tested