refactoring functionality