iterator
chainofresponsibility