diff --git a/src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java b/src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java
index 5fa56c2..0c2f6b0 100644
--- a/src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java
+++ b/src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java
@@ -9,49 +9,49 @@
     private long tableID;
 
     public RCTableID(String tableName) {
-	this.tableName = tableName;
-	this.tableID = 0;
+        this.tableName = tableName;
+        this.tableID = 0;
     }
 
     @Override
     public String getTableName() {
-	return tableName;
+        return tableName;
     }
 
     // following is RAMCloud specific
 
     public long getTableID() {
-	if ( tableID != 0) {
-	    return tableID;
-	}
-	tableID = RCClient.getJRamCloudClient().createTable(tableName);
-	return tableID;
+        if ( tableID != 0) {
+            return tableID;
+        }
+        tableID = RCClient.getJRamCloudClient().createTable(tableName);
+        return tableID;
     }
 
     void resetTableID() {
-	this.tableID = 0;
+        this.tableID = 0;
     }
 
     @Override
     public String toString() {
-	return "["+tableName + "]@" + getTableID();
+        return "["+tableName + "]@" + getTableID();
     }
 
     @Override
     public int hashCode() {
-	return Objects.hash(tableName, getTableID());
+        return Objects.hash(tableName, getTableID());
     }
 
     @Override
     public boolean equals(Object obj) {
-	if (this == obj)
-	    return true;
-	if (obj == null)
-	    return false;
-	if (getClass() != obj.getClass())
-	    return false;
-	RCTableID other = (RCTableID) obj;
-	return Objects.equals(tableName, other.tableName)
-		&& Objects.equals(getTableID(), other.getTableID());
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        RCTableID other = (RCTableID) obj;
+        return Objects.equals(tableName, other.tableName)
+                && Objects.equals(getTableID(), other.getTableID());
     }
 }
\ No newline at end of file
