diff --git a/scapy.py b/scapy.py
index ab8563bcbca9809b1a17b6b479807b07f53f1946..6b717999d792d9bcc06aad98553e639fb6d6b5c7 100755
--- a/scapy.py
+++ b/scapy.py
@@ -13809,6 +13809,7 @@ def scapy_write_history_file(readline):
 
 
 def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
+    global session
     import code,sys,cPickle,types,os,imp,getopt,logging
 
     logging.getLogger("scapy").setLevel(loglevel)
@@ -13831,13 +13832,15 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
 #    scapy=imp.load_module("scapy",*imp.find_module(scapy_module))
     
     
-    import __builtin__
 #    __builtin__.__dict__.update(scapy.__dict__)
+    import __builtin__
     __builtin__.__dict__.update(globals())
+    globkeys = globals().keys()
+    globkeys.append("scapy_session")
     if mydict is not None:
         __builtin__.__dict__.update(mydict)
-
-
+        globkeys += mydict.keys()
+    
     import re, atexit
     try:
         import rlcompleter,readline
@@ -13958,10 +13961,14 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
 
     if conf.session:
         save_session(conf.session, session)
-    
-    sys.exit()
 
 
+    for k in globkeys:
+        try:
+            del(__builtin__.__dict__[k])
+        except:
+            pass
+
 def read_config_file(configfile):
     try:
         execfile(configfile)