diff --git a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/ILifeCycleComponent.java b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/ILifeCycleComponent.java
index e273863..2cb757f 100644
--- a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/ILifeCycleComponent.java
+++ b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/ILifeCycleComponent.java
@@ -19,7 +19,7 @@
 
 public interface ILifeCycleComponent {
 
-   public void start();
+    public void start();
 
-	public void stop(boolean dumpState, OutputStream ouputStream) throws IOException;
+    public void stop(boolean dumpState, OutputStream ouputStream) throws IOException;
 }
diff --git a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java
index 55fc94b..ec27653 100644
--- a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java
+++ b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java
@@ -25,7 +25,7 @@
 
 public class LifeCycleComponentManager implements ILifeCycleComponentManager {
 
-    public static LifeCycleComponentManager INSTANCE = new LifeCycleComponentManager();
+    public final static LifeCycleComponentManager INSTANCE = new LifeCycleComponentManager();
 
     public static final class Config {
         public static final String DUMP_PATH_KEY = "DUMP_PATH";
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NCDriver.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NCDriver.java
index 81b91e8..489f696 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NCDriver.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/NCDriver.java
@@ -14,12 +14,17 @@
  */
 package edu.uci.ics.hyracks.control.nc;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 import org.kohsuke.args4j.CmdLineParser;
 
 import edu.uci.ics.hyracks.api.lifecycle.LifeCycleComponentManager;
 import edu.uci.ics.hyracks.control.common.controllers.NCConfig;
 
 public class NCDriver {
+    private static final Logger LOGGER = Logger.getLogger(NCDriver.class.getName());
+
     public static void main(String args[]) throws Exception {
         NCConfig ncConfig = new NCConfig();
         CmdLineParser cp = new CmdLineParser(ncConfig);
@@ -32,7 +37,9 @@
         }
 
         final NodeControllerService nService = new NodeControllerService(ncConfig);
-        System.out.println("Setting uncaught exception handler " + LifeCycleComponentManager.INSTANCE);
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.severe("Setting uncaught exception handler " + LifeCycleComponentManager.INSTANCE);
+        }
         Thread.currentThread().setUncaughtExceptionHandler(LifeCycleComponentManager.INSTANCE);
         nService.start();
         Runtime.getRuntime().addShutdownHook(new Thread() {
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java b/hyracks/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java
index 13ae7b1..1c8bd28 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java
@@ -1,6 +1,5 @@
 package edu.uci.ics.hyracks.storage.am.common.dataflow;
 
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
@@ -204,7 +203,6 @@
     }
 
     private void dumpState(OutputStream os) throws IOException {
-        DataOutputStream dos = new DataOutputStream(os);
         StringBuilder sb = new StringBuilder();
 
         sb.append(String.format("Memory budget = %d\n", memoryBudget));
@@ -218,6 +216,6 @@
             ii = entry.getValue();
             sb.append(String.format(rowFormat, entry.getKey(), ii.isOpen, ii.referenceCount, ii.lastAccess, ii.index));
         }
-        dos.writeUTF(sb.toString());
+        os.write(sb.toString().getBytes());
     }
 }
\ No newline at end of file
diff --git a/hyracks/hyracks-storage-common/src/main/java/edu/uci/ics/hyracks/storage/common/buffercache/BufferCache.java b/hyracks/hyracks-storage-common/src/main/java/edu/uci/ics/hyracks/storage/common/buffercache/BufferCache.java
index 934575c..6b6c6a1 100644
--- a/hyracks/hyracks-storage-common/src/main/java/edu/uci/ics/hyracks/storage/common/buffercache/BufferCache.java
+++ b/hyracks/hyracks-storage-common/src/main/java/edu/uci/ics/hyracks/storage/common/buffercache/BufferCache.java
@@ -14,7 +14,6 @@
  */
 package edu.uci.ics.hyracks.storage.common.buffercache;
 
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
@@ -803,9 +802,9 @@
     }
 
     @Override
-    public void stop(boolean dumpState, OutputStream ouputStream) throws IOException {
+    public void stop(boolean dumpState, OutputStream os) throws IOException {
         if (dumpState) {
-            new DataOutputStream(ouputStream).writeUTF(dumpState());
+            os.write(dumpState().getBytes());
         }
         close();
     }
