Mostly done. Need to do some cleanup and extra creit