Basic design complete, but not tested.