Further refactoring ...