More separation, more refactoring