Final assignment for Pattern-Oriented Software Architectures for Concurrent and Networked Software course on coursera.