implement retry feature
Merge branch 'retry'