Project 2, part 2 added.

Part 2 includes splitting up part 1 into individual files and adding a
compression function.