refactoring and clean-up, part 4
refactoring and clean-up, part 5