This contains assignment 3