rewrite to the design, implemented modules