and more refactoring...