diff --git a/repl/src/main/scala/spark/repl/SparkILoop.scala b/repl/src/main/scala/spark/repl/SparkILoop.scala
index bfbc66ebdd5a86f7932984cd07107f7689948368..aec398b96580bbbc99c1f96d2daddde43f63ba49 100644
--- a/repl/src/main/scala/spark/repl/SparkILoop.scala
+++ b/repl/src/main/scala/spark/repl/SparkILoop.scala
@@ -842,6 +842,9 @@ class SparkILoop(in0: Option[BufferedReader], val out: PrintWriter, val master:
   }
 
   def process(settings: Settings): Boolean = {
+    printWelcome()
+    echo("Initializing interpreter...")
+
     this.settings = settings
     createInterpreter()
     
@@ -856,7 +859,6 @@ class SparkILoop(in0: Option[BufferedReader], val out: PrintWriter, val master:
     if (intp.reporter.hasErrors)
       return false
     
-    printWelcome()
     try {      
       // this is about the illusion of snappiness.  We call initialize()
       // which spins off a separate thread, then print the prompt and try 
diff --git a/repl/src/main/scala/spark/repl/SparkIMain.scala b/repl/src/main/scala/spark/repl/SparkIMain.scala
index 49d0a2703034513aae93d23b16d1a6ef2de884dd..14e6eb34551b840811eb0a9b9a6adf16ca9aee89 100644
--- a/repl/src/main/scala/spark/repl/SparkIMain.scala
+++ b/repl/src/main/scala/spark/repl/SparkIMain.scala
@@ -29,6 +29,7 @@ import SparkIMain._
 
 import spark.HttpServer
 import spark.Utils
+import spark.SparkEnv
 
 /** An interpreter for Scala code.
  *  
@@ -879,7 +880,15 @@ class SparkIMain(val settings: Settings, protected val out: PrintWriter) extends
       }
       
       try {
-        val execution = lineManager.set(originalLine)(lineRep call "$export")
+        val execution = lineManager.set(originalLine) {
+          // MATEI: set the right SparkEnv for our SparkContext, because
+          // this execution will happen in a separate thread
+          val sc = spark.repl.Main.interp.sparkContext
+          if (sc != null && sc.env != null)
+            SparkEnv.set(sc.env)
+          // Execute the line
+          lineRep call "$export"
+        }
         execution.await()
         
         execution.state match {
diff --git a/repl/src/main/scala/spark/repl/SparkImports.scala b/repl/src/main/scala/spark/repl/SparkImports.scala
index bd28395f2ed7e910102340ee32812706f6bea5b3..6ccd3cf1f0c3b14bb7f595825768c1efa1688abd 100644
--- a/repl/src/main/scala/spark/repl/SparkImports.scala
+++ b/repl/src/main/scala/spark/repl/SparkImports.scala
@@ -144,8 +144,8 @@ trait SparkImports {
     // add code for a new object to hold some imports
     def addWrapper() {
       val impname = nme.INTERPRETER_IMPORT_WRAPPER
-      code append "object %s {\n".format(impname)
-      trailingBraces append "}\n"
+      code append "class %sC extends Serializable {\n".format(impname)
+      trailingBraces append "}\nval " + impname + " = new " + impname + "C;\n"
       accessPath append ("." + impname)
       
       currentImps.clear