lab4: optional part