CS480 Design Pattern Assignment