more horizontal refactoring