more refactoring, no new features.