Assignment 3: finished