more refactoring ...