further refactoring of