Third assignment for CSC309