moved responder logic into passable function