Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects