Need to refactoring