Final. Added code critique