adding add structure and boilerplate code