Re-do using Dave's assignment 4 solution as starting point