refactoring backend about complete