diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Editors.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Editors.java
similarity index 68%
rename from com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Editors.java
rename to com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Editors.java
index c9f70de..c26d91b 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Editors.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Editors.java
@@ -7,10 +7,12 @@
  * 
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.ui.util;
+package com.google.eclipse.protobuf.ui.util.editor;
 
 import static com.google.eclipse.protobuf.ui.ProtobufUiModule.PLUGIN_ID;
+import static com.google.eclipse.protobuf.ui.util.editor.Messages.*;
 import static org.eclipse.compare.rangedifferencer.RangeDifferencer.findDifferences;
+import static org.eclipse.core.filebuffers.FileBuffers.createTextFileBufferManager;
 import static org.eclipse.core.runtime.IStatus.ERROR;
 import static org.eclipse.core.runtime.Status.OK_STATUS;
 import static org.eclipse.core.runtime.SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK;
@@ -44,21 +46,19 @@
       SafeRunner.run(new ISafeRunnable() {
         public void handleException(Throwable exception) {
           logger.error(exception.getMessage(), exception);
-          String msg = "An error occurred while calculating the changed regions. See error log for details.";
-          errorStatus[0] = new Status(ERROR, PLUGIN_ID, 0, msg, exception);
+          errorStatus[0] = new Status(ERROR, PLUGIN_ID, 0, errorCalculatingChangedRegions, exception);
           result[0] = null;
         }
 
         public void run() throws Exception {
-          monitor.beginTask("Calculating changed regions", 20);
+          monitor.beginTask(calculatingChangedRegions, 20);
           IFileStore fileStore = buffer.getFileStore();
-          ITextFileBufferManager fileBufferManager = FileBuffers.createTextFileBufferManager();
+          ITextFileBufferManager fileBufferManager = createTextFileBufferManager();
           fileBufferManager.connectFileStore(fileStore, getSubProgressMonitor(monitor, 15));
           try {
-            IDocument currentDocument = buffer.getDocument();
-            IDocument oldDocument =
-                ((ITextFileBuffer) fileBufferManager.getFileStoreFileBuffer(fileStore)).getDocument();
-            result[0] = getChangedLineRegions(oldDocument, currentDocument);
+            IDocument current = buffer.getDocument();
+            IDocument old = ((ITextFileBuffer) fileBufferManager.getFileStoreFileBuffer(fileStore)).getDocument();
+            result[0] = getChangedLineRegions(old, current);
           } finally {
             fileBufferManager.disconnectFileStore(fileStore, getSubProgressMonitor(monitor, 5));
             monitor.done();
@@ -66,31 +66,30 @@
         }
 
         /*
-         * Returns regions of all lines which differ comparing {@code oldDocument}s content with 
-         * {@code currentDocument}s content. Successive lines are merged into one region.
+         * Returns regions of all lines which differ comparing {@code old}s content with {@code current}s content. 
+         * Successive lines are merged into one region.
          */
-        private IRegion[] getChangedLineRegions(IDocument oldDocument, IDocument currentDocument) {
-          RangeDifference[] differences = 
-              findDifferences(new LineComparator(oldDocument), new LineComparator(currentDocument));
+        private IRegion[] getChangedLineRegions(IDocument old, IDocument current) {
+          RangeDifference[] differences = differencesBetween(old, current);
           List<IRegion> regions = new ArrayList<IRegion>();
-          final int numberOfLines = currentDocument.getNumberOfLines();
-          for (RangeDifference current : differences) {
-            if (current.kind() == RangeDifference.CHANGE) {
-              int startLine = Math.min(current.rightStart(), numberOfLines - 1);
-              int endLine = current.rightEnd() - 1;
+          int numberOfLines = current.getNumberOfLines();
+          for (RangeDifference difference : differences) {
+            if (difference.kind() == RangeDifference.CHANGE) {
+              int startLine = Math.min(difference.rightStart(), numberOfLines - 1);
+              int endLine = difference.rightEnd() - 1;
               IRegion startLineRegion;
               try {
-                startLineRegion = currentDocument.getLineInformation(startLine);
+                startLineRegion = current.getLineInformation(startLine);
                 if (startLine >= endLine) {
                   // startLine > endLine indicates a deletion of one or more lines.
                   // Deletions are ignored except at the end of the document.
                   if (startLine == endLine
-                      || startLineRegion.getOffset() + startLineRegion.getLength() == currentDocument.getLength()) {
+                      || startLineRegion.getOffset() + startLineRegion.getLength() == current.getLength()) {
                     regions.add(startLineRegion);
                   }
                   continue;
                 } 
-                IRegion endLineRegion = currentDocument.getLineInformation(endLine);
+                IRegion endLineRegion = current.getLineInformation(endLine);
                 int startOffset = startLineRegion.getOffset();
                 int endOffset = endLineRegion.getOffset() + endLineRegion.getLength();
                 regions.add(new Region(startOffset, endOffset - startOffset));
@@ -101,6 +100,10 @@
           }
           return regions.toArray(new IRegion[regions.size()]);
         }
+
+        private RangeDifference[] differencesBetween(IDocument old, IDocument current) {
+          return findDifferences(new LineComparator(old), new LineComparator(current));
+        }
       });
     } finally {
       if (!errorStatus[0].isOK()) throw new CoreException(errorStatus[0]);
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/LineComparator.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/LineComparator.java
similarity index 96%
rename from com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/LineComparator.java
rename to com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/LineComparator.java
index 0515724..96553c8 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/LineComparator.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/LineComparator.java
@@ -7,7 +7,7 @@
  * 
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.ui.util;
+package com.google.eclipse.protobuf.ui.util.editor;
 
 import org.apache.log4j.Logger;
 import org.eclipse.compare.rangedifferencer.IRangeComparator;
@@ -20,6 +20,8 @@
  * 
  * This implementation of <code>IRangeComparator</code> compares lines of a document. The lines are compared using a DJB 
  * hash function.
+ * 
+ * @author alruiz@google.com (Alex Ruiz)
  */
 class LineComparator implements IRangeComparator {
 
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Messages.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Messages.java
new file mode 100644
index 0000000..0d62f2c
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Messages.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.ui.util.editor;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class Messages extends NLS {
+  
+  public static String calculatingChangedRegions;
+  public static String errorCalculatingChangedRegions;
+  
+  static {
+    Class<Messages> targetType = Messages.class;
+    NLS.initializeMessages(targetType.getName(), targetType);
+  }
+
+  private Messages() {}
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Messages.properties b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Messages.properties
new file mode 100644
index 0000000..e14ce2b
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/editor/Messages.properties
@@ -0,0 +1,2 @@
+calculatingChangedRegions=Calculating changed regions
+errorCalculatingChangedRegions=An error occurred while calculating the changed regions. See error log for details.
