some more refactoring
and more refactoring