...and yet more refactoring...