add Chain of Responsibility Pattern