add some design documentation