diff --git a/scapy/ansmachine.py b/scapy/ansmachine.py
index adf7f1f32226bb196d1d5b8dea57691f106866da..1c4f0762658abb8069a3f22f87c80b84de1b6595 100644
--- a/scapy/ansmachine.py
+++ b/scapy/ansmachine.py
@@ -2,7 +2,9 @@
 ## Answering machines ##
 ########################
 
-from sendrecv import send,sendp
+from sendrecv import send,sendp,sniff
+from config import conf
+from error import log_interactive
 
 class ReferenceAM(type):
     def __new__(cls, name, bases, dct):
diff --git a/scapy/asn1/asn1.py b/scapy/asn1/asn1.py
index 40bc88c90cae17a75c708333a86062e47b542414..2b1ffd22a83ff0b09feeadd8cd1869be2b2f8884 100644
--- a/scapy/asn1/asn1.py
+++ b/scapy/asn1/asn1.py
@@ -1,5 +1,6 @@
 import random
-from scapy.error import Scapy_Exception
+from scapy.config import conf
+from scapy.error import Scapy_Exception,warning
 from scapy.volatile import RandField
 from scapy.utils import Enum_metaclass, EnumElement
 
diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py
index 6d0e748726a5059a86ed3f2886a08a6c91e34517..abe99cd34c40c2838ab61d3ebb52f5abc16ff869 100644
--- a/scapy/asn1/ber.py
+++ b/scapy/asn1/ber.py
@@ -1,4 +1,5 @@
-from asn1 import ASN1_Decoding_Error,ASN1_BadTag_Decoding_Error,ASN1_Codecs,ASN1_Class_UNIVERSAL
+from scapy.error import warning
+from asn1 import ASN1_Decoding_Error,ASN1_BadTag_Decoding_Error,ASN1_Codecs,ASN1_Class_UNIVERSAL,ASN1_Error,ASN1_DECODING_ERROR,ASN1_BADTAG
 
 ##################
 ## BER encoding ##
diff --git a/scapy/asn1/mib.py b/scapy/asn1/mib.py
index d87177162e711d7f1e6aa69b2111440caa6f2f45..f815a35d3575da73ca521dcbe4fe72821f8bec4b 100644
--- a/scapy/asn1/mib.py
+++ b/scapy/asn1/mib.py
@@ -1,7 +1,8 @@
 import re
 from glob import glob
-from scapy.dadict import DADict
+from scapy.dadict import DADict,fixname
 from scapy.config import conf
+from scapy.utils import do_graph
 
 #################
 ## MIB parsing ##
diff --git a/scapy/automaton.py b/scapy/automaton.py
index 5893c957c2bc54e842736e1ed8c5e033dfb929cd..2c99213fbcecb114d4a3fcfcc8c33b35844a0385 100644
--- a/scapy/automaton.py
+++ b/scapy/automaton.py
@@ -1,6 +1,10 @@
 import types,itertools,time
 from select import select
 from config import conf
+from utils import do_graph
+from error import log_interactive
+from plist import PacketList
+from data import MTU
 
 ##############
 ## Automata ##
diff --git a/scapy/autorun.py b/scapy/autorun.py
index 4fc93fd774c2a6868d78fc02a3fa71f1f6877a78..e5ca2f8a4014d26e5c2805bcaeeba1a360205338 100644
--- a/scapy/autorun.py
+++ b/scapy/autorun.py
@@ -1,4 +1,6 @@
 import code,sys
+from config import conf
+from themes import *
 from error import Scapy_Exception
 
 #########################
diff --git a/scapy/config.py b/scapy/config.py
index fdf12aa2456af9863e3d3dbf1b1579814fab29b4..93bcfe7e9182411b912cb131193922e9338263ac 100644
--- a/scapy/config.py
+++ b/scapy/config.py
@@ -171,7 +171,9 @@ extensions_paths: path or list of paths where extensions are to be looked for
     services_tcp = TCP_SERVICES
     services_udp = UDP_SERVICES
     extensions_paths = "."
-    manufdb = load_manuf("/usr/share/wireshark/wireshark/manuf")   
+    manufdb = load_manuf("/usr/share/wireshark/wireshark/manuf")
+    stats_classic_protocols = []
+    stats_dot11_protocols = []
 
 conf=Conf()
 
diff --git a/scapy/data.py b/scapy/data.py
index 889b66c502c2c8b961cd3c1f7d2129acbf8f5f25..d3f8f92d7b55e59d6a8f790c7dbd427378cf930f 100644
--- a/scapy/data.py
+++ b/scapy/data.py
@@ -1,5 +1,6 @@
 import re
 from dadict import DADict
+from error import log_loading
 
 ############
 ## Consts ##
diff --git a/scapy/error.py b/scapy/error.py
index ad375b8a238aee023fd063c8461455663cd8ba7b..0dfcc74a5f01b5c4fd2852c62f308b264b580c96 100644
--- a/scapy/error.py
+++ b/scapy/error.py
@@ -13,6 +13,7 @@ class ScapyFreqFilter(logging.Filter):
         logging.Filter.__init__(self)
         self.warning_table = {}
     def filter(self, record):        
+        from config import conf
         wt = conf.warning_threshold
         if wt > 0:
             stk = traceback.extract_stack()
diff --git a/scapy/fields.py b/scapy/fields.py
index 637e706a0c5857995904e2f16d3c6f72cccc27cf..b402ac391ae3acd7b371e162f41dd51d082c1128 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -1,8 +1,11 @@
 import struct,copy,socket
+from config import conf
+from volatile import VolatileValue
 from data import *
 from utils import *
 from base_classes import BasePacket
 
+
 ############
 ## Fields ##
 ############
diff --git a/scapy/layers/dot11.py b/scapy/layers/dot11.py
index b09058fd2ffe77c896d20675ed5571823f36d842..a6593fec5f43e7546dcb8e75a689e7a1766870fa 100644
--- a/scapy/layers/dot11.py
+++ b/scapy/layers/dot11.py
@@ -467,3 +467,4 @@ iwconfig wlan0 mode managed
 
             
         
+conf.stats_dot11_protocols += [Dot11WEP, Dot11Beacon, ]
diff --git a/scapy/layers/inet.py b/scapy/layers/inet.py
index 860858f942f8766603176712136406e29492440b..acda9a28f965a89b842c3617b22c09d9aa056804 100644
--- a/scapy/layers/inet.py
+++ b/scapy/layers/inet.py
@@ -817,3 +817,5 @@ def fragleak2(target, timeout=0.4, onlyasc=0):
         pass
     
 
+conf.stats_classic_protocols += [TCP,UDP,ICMP]
+conf.stats_dot11_protocols += [TCP,UDP,ICMP]
diff --git a/scapy/main.py b/scapy/main.py
index 99febe18d9ed0be5fe19585f69ee49c04a74f5c2..ca30a04b96a47051ece2b10d8885efc1098fbd71 100644
--- a/scapy/main.py
+++ b/scapy/main.py
@@ -79,7 +79,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,re
+    import code,sys,cPickle,os,imp,getopt,logging,re
 
     logging.getLogger("scapy").setLevel(loglevel)
 
@@ -112,7 +112,7 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1):
         __builtin__.__dict__.update(mydict)
         globkeys += mydict.keys()
     
-    import re, atexit
+    import atexit
     try:
         import rlcompleter,readline
     except ImportError:
diff --git a/scapy/modules/queso.py b/scapy/modules/queso.py
index de29726e64daa361b1844684e63af39ef144cc35..db85b7aef953c55fa4ada77568fd2ce327d1dc86 100644
--- a/scapy/modules/queso.py
+++ b/scapy/modules/queso.py
@@ -1,5 +1,7 @@
 from scapy.data import KnowledgeBase
 from scapy.config import conf
+from scapy.layers.inet import IP,TCP
+#from 
 
 conf.queso_base ="/etc/queso.conf"
 
diff --git a/scapy/modules/voip.py b/scapy/modules/voip.py
index df2e4f8c5bcae5e0bd67c1a388817ee9f74a0980..f2a0835197d3d8172f240f7166091ad2f10c957d 100644
--- a/scapy/modules/voip.py
+++ b/scapy/modules/voip.py
@@ -3,14 +3,20 @@ import os
 ## Testing stuff ##
 ###################
 
+from fcntl import fcntl
+from scapy.sendrecv import sniff
+from scapy.packet import Raw
+from scapy.layers.inet import IP,UDP
+from scapy.layers.rtp import RTP
 
 
-def merge(x,y):
+def merge(x,y,sample_size=2):
     if len(x) > len(y):
         y += "\x00"*(len(x)-len(y))
     elif len(x) < len(y):
         x += "\x00"*(len(y)-len(x))
     m = ""
+    ss=sample_size
     for i in range(len(x)/ss):
         m += x[ss*i:ss*(i+1)]+y[ss*i:ss*(i+1)]
     return  m
diff --git a/scapy/plist.py b/scapy/plist.py
index 65b4a7acdf169b6dfbbb148de1afcaf569de4b6c..2d99389910d24f73e9fc69852aaa1f7667fa0a1e 100644
--- a/scapy/plist.py
+++ b/scapy/plist.py
@@ -3,6 +3,18 @@ from config import conf
 from error import warning
 from base_classes import BasePacket,BasePacketList
 
+from utils import incremental_label,colgen,do_graph,hexdump,make_table,make_lined_table,make_tex_table
+from packet import Padding,Raw
+from sendrecv import sr
+from layers.inet import IP,TCP,UDP,ICMP
+from layers.l2 import Ether
+from layers.dot11 import Dot11
+from layers.ip6 import IPv6 #,ICMPv6TimeExceeded
+
+import arch
+if arch.GNUPLOT:
+    Gnuplot=arch.Gnuplot
+
 #############
 ## Results ##
 #############
@@ -14,7 +26,7 @@ class PacketList(BasePacketList):
            res: the list of packets
            stats: a list of classes that will appear in the stats (defaults to [TCP,UDP,ICMP])"""
         if stats is None:
-            stats = [ TCP,UDP,ICMP ]
+            stats = conf.stats_classic_protocols
         self.stats = stats
         if res is None:
             res = []
@@ -344,6 +356,7 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
         return g
         
     def _dump_document(self, **kargs):
+        import pyx
         d = pyx.document.document()
         l = len(self.res)
         for i in range(len(self.res)):
@@ -421,7 +434,7 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
 class Dot11PacketList(PacketList):
     def __init__(self, res=None, name="Dot11List", stats=None):
         if stats is None:
-            stats = [Dot11WEP, Dot11Beacon, UDP, ICMP, TCP]
+            stats = conf.stats_dot11_protocols
 
         PacketList.__init__(self, res, name, stats)
     def toEthernet(self):
@@ -698,6 +711,7 @@ class TracerouteResult(SndRcvList):
                 
                 
     def world_trace(self):
+        from modules.geo import locate_ip
         ips = {}
         rt = {}
         ports_done = {}
diff --git a/scapy/route.py b/scapy/route.py
index 647b5851fb476358cf7db1e5c23e5148063fa981..33cfad1591a009b248b4b2f5b72d136fa6fff4ef 100644
--- a/scapy/route.py
+++ b/scapy/route.py
@@ -1,8 +1,8 @@
 import socket
-from arch import read_routes
-from utils import atol
+from arch import read_routes,get_if_addr
+from utils import atol,ltoa,itom
 from config import conf
-from error import warning
+from error import Scapy_Exception,warning
 
 ##############################
 ## Routing/Interfaces stuff ##
diff --git a/scapy/sendrecv.py b/scapy/sendrecv.py
index 03ce3658921fe7faedc164e7c0fe2c6a4d0243b5..3ae2047a8bedf2c6d2e3c548bd1f43eaa9b8a717 100644
--- a/scapy/sendrecv.py
+++ b/scapy/sendrecv.py
@@ -1,8 +1,11 @@
 import cPickle,os,sys,time
 from select import select
 from data import *
+from arch import *
 from config import conf
-
+from packet import Gen
+from plist import PacketList,SndRcvList
+from utils import warning
 
 #################
 ## Debug class ##
diff --git a/scapy/supersocket.py b/scapy/supersocket.py
index f9406018ea21586241e7ab35a2abe33a1fbf7dfd..a5bc6e38f433ac1908f81ba3358463b09b8aee91 100644
--- a/scapy/supersocket.py
+++ b/scapy/supersocket.py
@@ -3,7 +3,7 @@ from select import select
 from packet import Raw
 from data import *
 from config import conf
-from arch import PCAP,DNET
+from arch import PCAP,DNET,get_if_list,set_promisc,get_last_packet_timestamp,attach_filter
 
 def flush_fd(fd):
     if type(fd) is not int:
diff --git a/scapy/themes.py b/scapy/themes.py
index 64035799cb23dab34f06046b9ef30c6d3a1fbaf3..e7676cce1efc6b82083faa6bd1ab7d33fbcf28aa 100644
--- a/scapy/themes.py
+++ b/scapy/themes.py
@@ -1,4 +1,5 @@
-    
+from config import conf
+
 ##################
 ## Color themes ##
 ##################
diff --git a/scapy/utils.py b/scapy/utils.py
index a5f6704108237a55513bd8dbdc4360f0f513555f..c4de012a06c7967e6b9159f7f027939c41484211 100644
--- a/scapy/utils.py
+++ b/scapy/utils.py
@@ -1,8 +1,11 @@
 import os,sys,socket,types
+from config import conf
 import random
 import gzip,zlib,cPickle
 import re,struct,array
 from arch import *
+from error import log_runtime
+
 
 ###########
 ## Tools ##
diff --git a/scapy/volatile.py b/scapy/volatile.py
index 8a1b831f9b79ccf0a028660baedcf50e637491c8..86ab51999713901596cb180feed9d9a024849ba8 100644
--- a/scapy/volatile.py
+++ b/scapy/volatile.py
@@ -1,4 +1,6 @@
 import random,time
+from base_classes import Net
+from utils import corrupt_bits,corrupt_bytes
 
 ####################
 ## Random numbers ##