Software Design Pattern project