(142207: Lab 6 Complete with tests)