refactor, add specs(retry)