require callback argument