done with intermediate level