implemented basic design