add layout design and write cleaner tests
resolved merge conflict