untested, code but conceptually correct solution P1, chp4
untested, code but conceptually correct solution P1, chp4