assignment 58,59(58 has bug)