More design, starting on the implementation spec