lots more refactoring