diff --git a/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/Generator.java b/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/Generator.java
index 4279304..31c4855 100644
--- a/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/Generator.java
+++ b/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/Generator.java
@@ -29,36 +29,6 @@
         ARENA
     }
     
-    public static void main(String args[]) {
-        
-        RecordType resource = new RecordType("Resource");
-        resource.addField("last holder",    RecordType.Type.INT, "-1");
-        resource.addField("first waiter",   RecordType.Type.INT, "-1");
-        resource.addField("first upgrader", RecordType.Type.INT, "-1");
-        resource.addField("max mode",       RecordType.Type.INT, "LockMode.NL");
-        resource.addField("dataset id",     RecordType.Type.INT, null);
-        resource.addField("pk hash val",    RecordType.Type.INT, null);
-        resource.addField("next",           RecordType.Type.INT, null);
-        
-        RecordType request = new RecordType("Request");
-        request.addField("resource id",      RecordType.Type.INT,  null);
-        request.addField("lock mode",        RecordType.Type.INT,  null);
-        request.addField("job id",           RecordType.Type.INT,  null);
-        request.addField("prev job request", RecordType.Type.INT,  null);
-        request.addField("next job request", RecordType.Type.INT,  null);
-        request.addField("next request",     RecordType.Type.INT,  null);
-
-        
-        StringBuilder sb = new StringBuilder();
-
-        //generateMemoryManagerSource(request, sb);
-        //generateMemoryManagerSource(resource, sb);
-        //generateArenaManagerSource(request, sb);
-        //generateArenaManagerSource(resource, sb);
-
-        System.out.println(sb.toString());
-    }
-    
     public static void generateSource(
             Manager mgr, 
             RecordType rec, 
diff --git a/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/RecordType.java b/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/RecordType.java
index 741311b..6d31f63 100644
--- a/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/RecordType.java
+++ b/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/edu/uci/ics/asterix/recordmanagergenerator/RecordType.java
@@ -15,7 +15,6 @@
 
 package edu.uci.ics.asterix.recordmanagergenerator;
 
-import java.security.AlgorithmConstraints;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ConcurrentLockManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ConcurrentLockManager.java
index 1523d96..80da1ab 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ConcurrentLockManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ConcurrentLockManager.java
@@ -34,9 +34,7 @@
 import edu.uci.ics.hyracks.api.lifecycle.ILifeCycleComponent;
 
 /**
- * An implementation of the ILockManager interface for the
- * specific case of locking protocol with two lock modes: (S) and (X),
- * where S lock mode is shown by 0, and X lock mode is shown by 1.
+ * An implementation of the ILockManager interface.
  * 
  * @author tillw
  */
@@ -256,7 +254,6 @@
                 default:
                     throw new IllegalStateException();
             }
-            // TODO where do we check for deadlocks?
         } finally {
             group.releaseLatch();
         }
@@ -298,7 +295,6 @@
             int jobId = txnContext.getJobId().getId();
             long jobSlot = findOrAllocJobSlot(jobId);
 
-            // since locking is properly nested, finding the last holder for a job is good enough        
             long holder = removeLastHolder(resource, jobSlot);
 
             // deallocate request
@@ -352,8 +348,7 @@
         }
         jobArenaMgr.deallocate(jobSlot);
         
-        //System.err.println(table.append(new StringBuilder(), true).toString());
-        
+        //System.err.println(table.append(new StringBuilder(), true).toString());        
         //System.out.println("jobArenaMgr " + jobArenaMgr.addTo(new Stats()).toString());
         //System.out.println("resArenaMgr " + resArenaMgr.addTo(new Stats()).toString());
         //System.out.println("reqArenaMgr " + reqArenaMgr.addTo(new Stats()).toString());
