design the basic framework