some structural refactoring
-