yet another refactoring started