refactoring + buffered changed