tested & completed ex 2.29, completed ex 2.30, 2.31