use callback block instead of selector