added some overall structure