implement basic design