Update design

This implements some of the design found in #138