diff --git a/core/src/main/scala/kafka/tools/MirrorMaker.scala b/core/src/main/scala/kafka/tools/MirrorMaker.scala
index 2d93947..e395fc6 100644
--- a/core/src/main/scala/kafka/tools/MirrorMaker.scala
+++ b/core/src/main/scala/kafka/tools/MirrorMaker.scala
@@ -30,6 +30,10 @@ import kafka.javaapi
 
 object MirrorMaker extends Logging {
 
+  private var connectors: Seq[ZookeeperConsumerConnector] = null;
+  private var consumerThreads: Seq[MirrorMakerThread] = null;
+  private var producerThreads: ListBuffer[ProducerThread] = null;
+
   def main(args: Array[String]) {
     
     info ("Starting mirror maker")
@@ -104,7 +108,7 @@ object MirrorMaker extends Logging {
       new Producer[Array[Byte], Array[Byte]](config)
     })
 
-    val connectors = options.valuesOf(consumerConfigOpt).toList
+    connectors = options.valuesOf(consumerConfigOpt).toList
             .map(cfg => new ConsumerConfig(Utils.loadProps(cfg.toString)))
             .map(new ZookeeperConsumerConnector(_))
 
@@ -124,18 +128,9 @@ object MirrorMaker extends Logging {
 
     val producerDataChannel = new ProducerDataChannel[KeyedMessage[Array[Byte], Array[Byte]]](bufferSize);
 
-    val consumerThreads =
-      streams.zipWithIndex.map(streamAndIndex => new MirrorMakerThread(streamAndIndex._1, producerDataChannel, streamAndIndex._2))
-
-    val producerThreads = new ListBuffer[ProducerThread]()
+    consumerThreads = streams.zipWithIndex.map(streamAndIndex => new MirrorMakerThread(streamAndIndex._1, producerDataChannel, streamAndIndex._2))
 
-    def cleanShutdown() {
-      connectors.foreach(_.shutdown)
-      consumerThreads.foreach(_.awaitShutdown)
-      producerThreads.foreach(_.shutdown)
-      producerThreads.foreach(_.awaitShutdown)
-      info("Kafka mirror maker shutdown successfully")
-    }
+    producerThreads = new ListBuffer[ProducerThread]()
 
     Runtime.getRuntime.addShutdownHook(new Thread() {
       override def run() {
@@ -160,6 +155,14 @@ object MirrorMaker extends Logging {
     cleanShutdown()
   }
 
+  def cleanShutdown() {
+    connectors.foreach(_.shutdown)
+    consumerThreads.foreach(_.awaitShutdown)
+    producerThreads.foreach(_.shutdown)
+    producerThreads.foreach(_.awaitShutdown)
+    info("Kafka mirror maker shutdown successfully")
+  }
+
   class MirrorMakerThread(stream: KafkaStream[Array[Byte], Array[Byte]],
                           producerDataChannel: ProducerDataChannel[KeyedMessage[Array[Byte], Array[Byte]]],
                           threadId: Int)
