UPDATED TPS6e 12.2 Exercise 31