Lots of updates to design doc - we may need some more diagrams and function specifications