Completed Assignment - needs polishing