added extractChangeEvents() method