Design Patterns: Architecture of an Autonomous Application