design the interface