create chain of responsibility pattern