Lab 4: finished (tests OK)