added onHands as groovy closure