lab4(unfinished)