Pattern Languages of Program Design 4 (Software Patterns Series)