lab2: complete