Design Patterns: How to Create Simple Interfaces