IMPROVE: more refactoring