final Version of Assign1