futher refactoring