Applying Design Patterns