Assignment #3: final project