add chain of resposibility pattern