finished number 7; should optimize