Assignment 2 from Andrew McConachie

Don't merge this one.  I'll do another one shortly.