add RetryWithDelayJob with some refactoring