use queue to schedule delayed execution