adding design pattern chain of responsability