UPDATED TPS6e 3.1 Exercise 23