Most unit tests written.  Still need to finish a few, and then implement a more efficient `chain()` method.