Initial implementation

This issue only exists so I can get some code review.