Avoiding Over-Engineering - Applying Design Patterns | OneNoughtOne