implemented basic structure