Design patterns project