even more refactoring
even more refactoring