This is my semester project for se450, object oriented design