design the basic structure