diff --git a/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/io/FileReference.java b/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/io/FileReference.java
index e6f3481..ffe41d0 100644
--- a/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/io/FileReference.java
+++ b/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/io/FileReference.java
@@ -37,7 +37,7 @@
     	return file;
     }
 
-    public IODeviceHandle getDevideHandle() {
+    public IODeviceHandle getDeviceHandle() {
     	return dev;
     }
     
diff --git a/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTree.java b/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
index ec05b94..40f4c09 100644
--- a/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
+++ b/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
@@ -75,7 +75,6 @@
     // In-memory components.   
     private final LSMBTreeComponent mutableComponent;
 
-    // On-disk components.    
     // For creating BTree's used in flush and merge.
     private final LSMBTreeComponentFactory componentFactory;
     // For creating BTree's used in bulk load. Different from diskBTreeFactory
diff --git a/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java b/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java
index a85dbfb..9e38fbf 100644
--- a/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java
+++ b/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java
@@ -52,14 +52,14 @@
         Set<IODeviceHandle> devs = new HashSet<IODeviceHandle>();
         for (ILSMComponent o : mergingComponents) {
             LSMBTreeComponent component = (LSMBTreeComponent) o;
-            devs.add(component.getBTree().getFileReference().getDevideHandle());
+            devs.add(component.getBTree().getFileReference().getDeviceHandle());
         }
         return devs;
     }
 
     @Override
     public Set<IODeviceHandle> getWriteDevices() {
-        return Collections.singleton(mergeTarget.getDevideHandle());
+        return Collections.singleton(mergeTarget.getDeviceHandle());
     }
 
     @Override
diff --git a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
index e1a3c36..356f314 100644
--- a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
+++ b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
@@ -24,8 +24,6 @@
     private final AtomicInteger threadRef = new AtomicInteger();
     private LSMComponentState state;
 
-    private final Object componentSync = new Object();
-
     @Override
     public void activate() {
 
@@ -53,21 +51,21 @@
 
     @Override
     public void setState(LSMComponentState state) {
-        synchronized (componentSync) {
+        synchronized (this) {
             this.state = state;
         }
     }
 
     @Override
     public LSMComponentState getState() {
-        synchronized (componentSync) {
+        synchronized (this) {
             return state;
         }
     }
 
     @Override
     public boolean negativeCompareAndSet(LSMComponentState compare, LSMComponentState update) {
-        synchronized (componentSync) {
+        synchronized (this) {
             if (state != compare) {
                 state = update;
                 return true;
diff --git a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMFlushOperation.java b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMFlushOperation.java
index 3046d90..9cffb3c 100644
--- a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMFlushOperation.java
+++ b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMFlushOperation.java
@@ -31,7 +31,7 @@
 
     @Override
     public Set<IODeviceHandle> getWriteDevices() {
-        return Collections.singleton(flushTarget.getDevideHandle());
+        return Collections.singleton(flushTarget.getDeviceHandle());
     }
 
     @Override
diff --git a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index 088262c..6a1727f 100644
--- a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++ b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -47,13 +47,9 @@
  * A merge and a flush can proceed concurrently.
  */
 public class LSMHarness implements ILSMHarness {
-    protected final Logger LOGGER = Logger.getLogger(LSMHarness.class.getName());
+    private final Logger LOGGER = Logger.getLogger(LSMHarness.class.getName());
 
-    private ILSMIndexInternal lsmIndex;
-
-    // All accesses to the LSM-Tree's on-disk components are synchronized on diskComponentsSync.
-    private Object diskComponentsSync = new Object();
-
+    private final ILSMIndexInternal lsmIndex;
     private final ILSMMergePolicy mergePolicy;
     private final ILSMOperationTracker opTracker;
     private final ILSMIOOperationScheduler ioScheduler;
@@ -117,7 +113,7 @@
             operation.getCallback().afterFinalize(operation, newComponent);
         }
         lsmIndex.resetMutableComponent();
-        synchronized (diskComponentsSync) {
+        synchronized (this) {
             lsmIndex.addComponent(newComponent);
             mergePolicy.diskComponentAdded(lsmIndex, lsmIndex.getImmutableComponents().size());
         }
@@ -143,7 +139,7 @@
         // Since this mode is only used for merging trees, it doesn't really
         // matter if the merge excludes the new on-disk Tree.
         List<ILSMComponent> operationalComponents;
-        synchronized (diskComponentsSync) {
+        synchronized (this) {
             operationalComponents = lsmIndex.getOperationalComponents(ctx);
         }
         for (ILSMComponent c : operationalComponents) {
@@ -191,7 +187,7 @@
 
         // Remove the old components from the list, and add the new merged component(s).
         try {
-            synchronized (diskComponentsSync) {
+            synchronized (this) {
                 lsmIndex.subsumeMergedComponents(newComponent, mergedComponents);
             }
         } finally {
@@ -232,7 +228,7 @@
         // forcing all pages of the tree to disk, possibly with some extra
         // information to mark the tree as valid).
         lsmIndex.markAsValid(index);
-        synchronized (diskComponentsSync) {
+        synchronized (this) {
             lsmIndex.addComponent(index);
             mergePolicy.diskComponentAdded(lsmIndex, lsmIndex.getImmutableComponents().size());
         }
diff --git a/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java b/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java
index 3379b47..d10a056 100644
--- a/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java
+++ b/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java
@@ -47,7 +47,7 @@
 
     @Override
     public Set<IODeviceHandle> getWriteDevices() {
-        return Collections.singleton(dictBTreeFlushTarget.getDevideHandle());
+        return Collections.singleton(dictBTreeFlushTarget.getDeviceHandle());
     }
 
     @Override
diff --git a/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java b/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
index 4289a14..9f7ea8d 100644
--- a/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
+++ b/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
@@ -55,8 +55,8 @@
         for (Object o : mergingComponents) {
             LSMInvertedIndexComponent component = (LSMInvertedIndexComponent) o;
             OnDiskInvertedIndex invIndex = (OnDiskInvertedIndex) component.getInvIndex();
-            devs.add(invIndex.getBTree().getFileReference().getDevideHandle());
-            devs.add(component.getDeletedKeysBTree().getFileReference().getDevideHandle());
+            devs.add(invIndex.getBTree().getFileReference().getDeviceHandle());
+            devs.add(component.getDeletedKeysBTree().getFileReference().getDeviceHandle());
         }
         return devs;
     }
@@ -64,8 +64,8 @@
     @Override
     public Set<IODeviceHandle> getWriteDevices() {
         Set<IODeviceHandle> devs = new HashSet<IODeviceHandle>(2);
-        devs.add(dictBTreeMergeTarget.getDevideHandle());
-        devs.add(deletedKeysBTreeMergeTarget.getDevideHandle());
+        devs.add(dictBTreeMergeTarget.getDeviceHandle());
+        devs.add(deletedKeysBTreeMergeTarget.getDeviceHandle());
         return devs;
     }
 
diff --git a/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java b/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java
index 72cc95aa..f0ea892 100644
--- a/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java
+++ b/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java
@@ -35,8 +35,8 @@
     @Override
     public Set<IODeviceHandle> getWriteDevices() {
         Set<IODeviceHandle> devs = new HashSet<IODeviceHandle>();
-        devs.add(rtreeFlushTarget.getDevideHandle());
-        devs.add(btreeFlushTarget.getDevideHandle());
+        devs.add(rtreeFlushTarget.getDeviceHandle());
+        devs.add(btreeFlushTarget.getDeviceHandle());
         return devs;
     }
 
diff --git a/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java b/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java
index 7bf4078..368fc97 100644
--- a/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java
+++ b/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java
@@ -39,15 +39,15 @@
         Set<IODeviceHandle> devs = new HashSet<IODeviceHandle>();
         for (ILSMComponent o : mergingComponents) {
             LSMRTreeComponent component = (LSMRTreeComponent) o;
-            devs.add(component.getRTree().getFileReference().getDevideHandle());
-            devs.add(component.getBTree().getFileReference().getDevideHandle());
+            devs.add(component.getRTree().getFileReference().getDeviceHandle());
+            devs.add(component.getBTree().getFileReference().getDeviceHandle());
         }
         return devs;
     }
 
     @Override
     public Set<IODeviceHandle> getWriteDevices() {
-        return Collections.singleton(rtreeMergeTarget.getDevideHandle());
+        return Collections.singleton(rtreeMergeTarget.getDeviceHandle());
     }
 
     @Override
