basic stucture mostly done