Chain-of-responsibility pattern