added the design diagram