revise & add diagram