Initial draft of the assignment

Have this working with minimal data and most of the comments in place.
Will do another pass or two before submitting.