diff --git a/scapy/all.py b/scapy/all.py
index 15dd3ca43adf01673140a43fc75d3bcd46e58b35..9d6e5b5d3f80e7ab619869b98242d468bcc23b18 100644
--- a/scapy/all.py
+++ b/scapy/all.py
@@ -7,41 +7,41 @@
 Aggregate top level objects from all Scapy modules.
 """
 
-from base_classes import *
-from config import *
-from dadict import *
-from data import *
-from error import *
-from themes import *
-from arch import *
-
-from plist import *
-from fields import *
-from packet import *
-from asn1fields import *
-from asn1packet import *
-
-from utils import *
-from route import *
+from scapy.base_classes import *
+from scapy.config import *
+from scapy.dadict import *
+from scapy.data import *
+from scapy.error import *
+from scapy.themes import *
+from scapy.arch import *
+
+from scapy.plist import *
+from scapy.fields import *
+from scapy.packet import *
+from scapy.asn1fields import *
+from scapy.asn1packet import *
+
+from scapy.utils import *
+from scapy.route import *
 if conf.ipv6_enabled:
-    from utils6 import *
-    from route6 import *
-from sendrecv import *
-from supersocket import *
-from volatile import *
-from as_resolvers import *
+    from scapy.utils6 import *
+    from scapy.route6 import *
+from scapy.sendrecv import *
+from scapy.supersocket import *
+from scapy.volatile import *
+from scapy.as_resolvers import *
 
-from ansmachine import *
-from automaton import *
-from autorun import *
+from scapy.ansmachine import *
+from scapy.automaton import *
+from scapy.autorun import *
 
-from main import *
+from scapy.main import *
 
-from layers.all import *
+from scapy.layers.all import *
 
-from asn1.asn1 import *
-from asn1.ber import *
-from asn1.mib import *
+from scapy.asn1.asn1 import *
+from scapy.asn1.ber import *
+from scapy.asn1.mib import *
 
-from pipetool import *
-from scapypipes import *
+from scapy.pipetool import *
+from scapy.scapypipes import *
diff --git a/scapy/ansmachine.py b/scapy/ansmachine.py
index d73bd421c323f5f17817e1b4855f9008ba1da824..7f570cbfc87703d71b6b090f5723cfd522f98a42 100644
--- a/scapy/ansmachine.py
+++ b/scapy/ansmachine.py
@@ -11,9 +11,9 @@ Answering machines.
 ## Answering machines ##
 ########################
 
-from sendrecv import send,sendp,sniff
-from config import conf
-from error import log_interactive
+from scapy.sendrecv import send,sendp,sniff
+from scapy.config import conf
+from scapy.error import log_interactive
 
 class ReferenceAM(type):
     def __new__(cls, name, bases, dct):
diff --git a/scapy/arch/__init__.py b/scapy/arch/__init__.py
index 058f0f17913affa3cc4ecefdda9a2b72477706c0..389a22b2c8dc9f5d6ca798dbb33eb2a758ddce77 100644
--- a/scapy/arch/__init__.py
+++ b/scapy/arch/__init__.py
@@ -9,8 +9,10 @@ Operating system specific functionality.
 
 
 import sys,os,socket
+
 from scapy.error import *
 import scapy.config
+from scapy.pton_ntop import inet_pton
 
 try:
     from matplotlib import get_backend as matplotlib_get_backend
@@ -79,19 +81,19 @@ ARM_64 = not WINDOWS and (os.uname()[4] == 'aarch64')
 
 
 if LINUX:
-    from linux import *
+    from scapy.arch.linux import *
     if scapy.config.conf.use_pcap or scapy.config.conf.use_dnet:
-        from pcapdnet import *
+        from scapy.arch.pcapdnet import *
 elif BSD:
-    from bsd import LOOPBACK_NAME
-    from unix import read_routes, read_routes6, in6_getifaddr
+    from scapy.arch.bsd import LOOPBACK_NAME
+    from scapy.arch.unix import read_routes, read_routes6, in6_getifaddr
     scapy.config.conf.use_pcap = True
     scapy.config.conf.use_dnet = True
-    from pcapdnet import *
+    from scapy.arch.pcapdnet import *
 elif SOLARIS:
-    from solaris import *
+    from scapy.arch.solaris import *
 elif WINDOWS:
-    from windows import *
+    from scapy.arch.windows import *
 
 if scapy.config.conf.iface is None:
     scapy.config.conf.iface = LOOPBACK_NAME
diff --git a/scapy/arch/linux.py b/scapy/arch/linux.py
index 0b2b9b9e78e4562a2c31e1e8f19f7db3630475a6..a9908bfc798b4f40f474d86a943b0eba38079db8 100644
--- a/scapy/arch/linux.py
+++ b/scapy/arch/linux.py
@@ -11,6 +11,7 @@ from __future__ import with_statement
 import sys,os,struct,socket,time
 from select import select
 from fcntl import ioctl
+
 import scapy.utils
 import scapy.utils6
 from scapy.packet import Packet, Padding
@@ -18,7 +19,7 @@ from scapy.config import conf
 from scapy.data import *
 from scapy.supersocket import SuperSocket
 import scapy.arch
-from scapy.error import warning, Scapy_Exception
+from scapy.error import warning, Scapy_Exception, log_interactive, log_loading
 from scapy.arch.common import get_if
 
 
diff --git a/scapy/arch/pcapdnet.py b/scapy/arch/pcapdnet.py
index 13ec1fae7fafbc7b11cc5ad64eb59eb7d91f7764..ae628bce73a648b5aea76703166527d8b152be3b 100755
--- a/scapy/arch/pcapdnet.py
+++ b/scapy/arch/pcapdnet.py
@@ -8,16 +8,16 @@ Packet sending and receiving with libdnet and libpcap/WinPcap.
 """
 
 import time,struct,sys
+import socket
 if not sys.platform.startswith("win"):
     from fcntl import ioctl
+
 from scapy.data import *
 from scapy.config import conf
 from scapy.utils import warning, mac2str
 from scapy.supersocket import SuperSocket
-from scapy.error import Scapy_Exception
+from scapy.error import Scapy_Exception, log_loading
 import scapy.arch
-import socket
-
 
 if conf.use_winpcapy:
   #mostly code from https://github.com/phaethon/scapy translated to python2.X
@@ -145,17 +145,17 @@ if conf.use_winpcapy:
           return pcap_datalink(self.pcap)
       def fileno(self):
           if sys.platform.startswith("win"):
-            error("Cannot get selectable PCAP fd on Windows")
+            log_loading.error("Cannot get selectable PCAP fd on Windows")
             return 0
           return pcap_get_selectable_fd(self.pcap) 
       def setfilter(self, f):
           filter_exp = create_string_buffer(f)
           if pcap_compile(self.pcap, byref(self.bpf_program), filter_exp, 0, -1) == -1:
-            error("Could not compile filter expression %s" % f)
+            log_loading.error("Could not compile filter expression %s" % f)
             return False
           else:
             if pcap_setfilter(self.pcap, byref(self.bpf_program)) == -1:
-              error("Could not install filter %s" % f)
+              log_loading.error("Could not install filter %s" % f)
               return False
           return True
       def setnonblock(self, i):
diff --git a/scapy/arch/solaris.py b/scapy/arch/solaris.py
index 3117076a277ab5a90a36c124f00f4bf3a24dc478..13d23497a23aa474d0baa7f9ed16faae08158c38 100644
--- a/scapy/arch/solaris.py
+++ b/scapy/arch/solaris.py
@@ -13,4 +13,4 @@ socket.IPPROTO_GRE = 47
 
 LOOPBACK_NAME="lo0"
 
-from unix import *
+from scapy.arch.unix import *
diff --git a/scapy/arch/unix.py b/scapy/arch/unix.py
index 1449df3732347c5f7c22d9042a4fa0de814c830f..624844d4762716c528570d621a72b0f049c2436d 100644
--- a/scapy/arch/unix.py
+++ b/scapy/arch/unix.py
@@ -9,7 +9,9 @@ Common customizations for all Unix-like operating systems other than Linux
 
 import sys,os,struct,socket,time
 from fcntl import ioctl
-from scapy.error import warning
+import socket
+
+from scapy.error import warning, log_interactive
 import scapy.config
 import scapy.utils
 from scapy.utils6 import in6_getscope, construct_source_candidate_set
@@ -17,8 +19,6 @@ from scapy.utils6 import in6_isvalid, in6_ismlladdr, in6_ismnladdr
 import scapy.arch
 from scapy.config import conf
 
-import socket
-
 
 ##################
 ## Routes stuff ##
diff --git a/scapy/arch/windows/__init__.py b/scapy/arch/windows/__init__.py
index b28551171bee2c7f05cecc8fe7fa668177664302..3884dac7d71579b41107175d3451aec69f4dcdda 100755
--- a/scapy/arch/windows/__init__.py
+++ b/scapy/arch/windows/__init__.py
@@ -19,7 +19,6 @@ from scapy.utils import atol, itom, inet_aton, inet_ntoa, PcapReader
 from scapy.base_classes import Gen, Net, SetGen
 import scapy.plist as plist
 from scapy.sendrecv import debug, srp1
-from scapy.layers.l2 import Ether, ARP
 from scapy.data import MTU, ETHER_BROADCAST, ETH_P_ARP
 
 conf.use_pcap = False
@@ -211,7 +210,7 @@ def get_windows_if_list():
     ]
 
 def get_ip_from_name(ifname, v6=False):
-    for descr, ipadrr in exec_query(['Get-WmiObject',
+    for descr, ipaddr in exec_query(['Get-WmiObject',
                                      'Win32_NetworkAdapterConfiguration'],
                                     ['Description', 'IPAddress']):
         if descr == ifname.strip():
diff --git a/scapy/as_resolvers.py b/scapy/as_resolvers.py
index 24573c209de83491f4b34479dbd6186f6f5eff1b..a1f3b7961320a204477151f5e1a2f2ec4cb43900 100644
--- a/scapy/as_resolvers.py
+++ b/scapy/as_resolvers.py
@@ -9,7 +9,7 @@ Resolve Autonomous Systems (AS).
 
 
 import socket
-from config import conf
+from scapy.config import conf
 
 class AS_resolver:
     server = None
diff --git a/scapy/asn1/asn1.py b/scapy/asn1/asn1.py
index 6823d45ba0e406d7685e8962cb714a75c10d2a46..55d7ab6b0f77cd90f882455588855d6e5b5c73f2 100644
--- a/scapy/asn1/asn1.py
+++ b/scapy/asn1/asn1.py
@@ -12,7 +12,7 @@ import random
 from datetime import datetime
 from scapy.config import conf
 from scapy.error import Scapy_Exception, warning
-from scapy.volatile import RandField
+from scapy.volatile import RandField, RandIP
 from scapy.utils import Enum_metaclass, EnumElement, binrepr
 
 class RandASN1Object(RandField):
diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py
index f1cdcc64e9038a42a50bdccd7bdf4067ae33d38d..bfe74726eaf6c6742a52fa5f0dfcdf57bb336143 100644
--- a/scapy/asn1/ber.py
+++ b/scapy/asn1/ber.py
@@ -11,7 +11,7 @@ Basic Encoding Rules (BER) for ASN.1
 
 from scapy.error import warning
 from scapy.utils import binrepr,inet_aton,inet_ntoa
-from asn1 import ASN1_Decoding_Error,ASN1_Encoding_Error,ASN1_BadTag_Decoding_Error,ASN1_Codecs,ASN1_Class_UNIVERSAL,ASN1_Error,ASN1_DECODING_ERROR,ASN1_BADTAG
+from scapy.asn1.asn1 import ASN1_Decoding_Error,ASN1_Encoding_Error,ASN1_BadTag_Decoding_Error,ASN1_Codecs,ASN1_Class_UNIVERSAL,ASN1_Error,ASN1_DECODING_ERROR,ASN1_BADTAG
 
 ##################
 ## BER encoding ##
diff --git a/scapy/asn1fields.py b/scapy/asn1fields.py
index 78d4399a873d3dba13aea900bb0731886337af50..7c37d14f92ffe8f6d2e4b16a54cc602109ae23fc 100644
--- a/scapy/asn1fields.py
+++ b/scapy/asn1fields.py
@@ -8,12 +8,13 @@
 Classes that implement ASN.1 data structures.
 """
 
-from asn1.asn1 import *
-from asn1.ber import *
-from asn1.mib import *
-from volatile import *
-from base_classes import BasePacket
-from utils import binrepr
+from scapy.asn1.asn1 import *
+from scapy.asn1.ber import *
+from scapy.asn1.mib import *
+from scapy.volatile import *
+from scapy.base_classes import BasePacket
+from scapy.utils import binrepr
+from scapy import packet
 
 class ASN1F_badsequence(Exception):
     pass
@@ -376,7 +377,7 @@ class ASN1F_SEQUENCE_OF(ASN1F_field):
         return self.i2m(pkt, s)
 
     def randval(self):
-        return fuzz(self.asn1pkt())
+        return packet.fuzz(self.asn1pkt())
     def __repr__(self):
         return "<%s %s>" % (self.__class__.__name__, self.name)
 
@@ -496,7 +497,7 @@ class ASN1F_CHOICE(ASN1F_field):
                                 explicit_tag=exp)
         return BER_tagging_enc(s, explicit_tag=self.explicit_tag)
     def randval(self):
-        return RandChoice(*(fuzz(x()) for x in self.choices.itervalues()))
+        return RandChoice(*(packet.fuzz(x()) for x in self.choices.itervalues()))
 
 class ASN1F_PACKET(ASN1F_field):
     holds_packets = 1
@@ -579,7 +580,3 @@ class ASN1F_FLAGS(ASN1F_BIT_STRING):
             pretty_s = ", ".join(self.get_flags(pkt))
             return pretty_s + " " + repr(x)
         return repr(x)
-
-
-# This import must come last to avoid problems with cyclic dependencies
-import packet
diff --git a/scapy/asn1packet.py b/scapy/asn1packet.py
index 1b83c3a3e2f29152208717fcf8006da5546b3e5c..5d7b56a39ff043e2274784600522fde960581581 100644
--- a/scapy/asn1packet.py
+++ b/scapy/asn1packet.py
@@ -7,7 +7,8 @@
 Packet holding data in Abstract Syntax Notation (ASN.1).
 """
 
-from packet import *
+from scapy.base_classes import Packet_metaclass
+from scapy.packet import Packet
 
 class ASN1Packet_metaclass(Packet_metaclass):
     def __new__(cls, name, bases, dct):
diff --git a/scapy/automaton.py b/scapy/automaton.py
index 1dde1dacfbad1e159b904309d8f3cc2753e9f5f7..247fa9d1b8cd18011b207b8e97611c137291abbf 100644
--- a/scapy/automaton.py
+++ b/scapy/automaton.py
@@ -12,12 +12,12 @@ import types,itertools,time,os,sys,socket,traceback
 from select import select
 from collections import deque
 import thread
-from config import conf
-from utils import do_graph
-from error import log_interactive
-from plist import PacketList
-from data import MTU
-from supersocket import SuperSocket
+from scapy.config import conf
+from scapy.utils import do_graph
+from scapy.error import log_interactive
+from scapy.plist import PacketList
+from scapy.data import MTU
+from scapy.supersocket import SuperSocket
 
 class ObjectPipe:
     def __init__(self):
diff --git a/scapy/autorun.py b/scapy/autorun.py
index a45349497708b8dfec3fbb9b66b9dd43475b2ff8..b3b5c568e0edeb05ff0ec9ad8e5a0c384ad810b8 100644
--- a/scapy/autorun.py
+++ b/scapy/autorun.py
@@ -8,10 +8,10 @@ Run commands when the Scapy interpreter starts.
 """
 
 import code,sys
-from config import conf
-from themes import *
-from error import Scapy_Exception
-from utils import tex_escape
+from scapy.config import conf
+from scapy.themes import *
+from scapy.error import Scapy_Exception
+from scapy.utils import tex_escape
 
 
 #########################
diff --git a/scapy/base_classes.py b/scapy/base_classes.py
index 7575bf6bfaae82d01d229337347d303ca4818af3..a810c085cecac7c6a582957e744786a030fd7dbc 100644
--- a/scapy/base_classes.py
+++ b/scapy/base_classes.py
@@ -12,8 +12,6 @@ Generators and packet meta classes.
 ################
 
 import re,random,socket
-import config
-import error
 import types
 
 class Gen(object):
@@ -202,6 +200,7 @@ class Packet_metaclass(type):
         for f in newcls.fields_desc:
             if hasattr(f, "register_owner"):
                 f.register_owner(newcls)
+        from scapy import config
         config.conf.layers.register(newcls)
         return newcls
 
@@ -216,6 +215,7 @@ class Packet_metaclass(type):
             try:
                 cls = cls.dispatch_hook(*args, **kargs)
             except:
+                from scapy import config
                 if config.conf.debug_dissector:
                     raise
                 cls = config.conf.raw_layer
@@ -238,7 +238,7 @@ class NewDefaultValues(Packet_metaclass):
     and it should still work.
     """    
     def __new__(cls, name, bases, dct):
-        from error import log_loading
+        from scapy.error import log_loading
         import traceback
         try:
             for tb in traceback.extract_stack()+[("??",-1,None,"")]:
diff --git a/scapy/config.py b/scapy/config.py
index 7f99e3d88b79f02d106084df98073871a7903c08..3f4fe8e6f0d1d64b92bf44e43f1a684aa121e82f 100755
--- a/scapy/config.py
+++ b/scapy/config.py
@@ -8,10 +8,11 @@ Implementation for of the configuration object.
 """
 
 import os,time,socket,sys
-from data import *
-import base_classes
-import themes
-from error import log_scapy
+
+from scapy.data import *
+from scapy import base_classes
+from scapy import themes
+from scapy.error import log_scapy
 
 ############
 ## Config ##
@@ -279,7 +280,7 @@ def _prompt_changer(attr,val):
     prompt = conf.prompt
     try:
         ct = val
-        if isinstance(ct, AnsiColorTheme) and ct.prompt(""):
+        if isinstance(ct, themes.AnsiColorTheme) and ct.prompt(""):
             ## ^A and ^B delimit invisible caracters for readline to count right.
             ## And we need ct.prompt() to do change something or else ^A and ^B will be
             ## displayed
diff --git a/scapy/contrib/HomePlugAV.py b/scapy/contrib/HomePlugAV.py
index 1717f442ab53f1ed6141b35285ba666f901995d5..704720f3f3e9d39e51148a314fc6864bdccbf35b 100644
--- a/scapy/contrib/HomePlugAV.py
+++ b/scapy/contrib/HomePlugAV.py
@@ -1,4 +1,7 @@
-from scapy.all import *
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.l2 import Ether
+
 """
     Copyright (C) HomePlugAV Layer for Scapy by FlUxIuS (Sebastien Dudek)
 """
diff --git a/scapy/contrib/bgp.py b/scapy/contrib/bgp.py
index 61655e3712e9214dfc869a9a7dbe1117b0892a50..e6b86308e43fd3a836c0576e1f68bc443c8fab76 100644
--- a/scapy/contrib/bgp.py
+++ b/scapy/contrib/bgp.py
@@ -165,5 +165,6 @@ bind_layers( BGPHeader,       BGPHeader,   type=4)
 
 
 if __name__ == "__main__":
+    from scapy.main import interact
     interact(mydict=globals(), mybanner="BGP addon .05")
 
diff --git a/scapy/contrib/carp.py b/scapy/contrib/carp.py
index 3831aae47f60bc75dc4868845c1862382e67ccd2..aba858fcef49844ff9468600ecef09d2f5f91bbe 100644
--- a/scapy/contrib/carp.py
+++ b/scapy/contrib/carp.py
@@ -2,11 +2,12 @@
 # scapy.contrib.description = CARP
 # scapy.contrib.status = loads
 
+import struct, hmac, hashlib
+
 from scapy.packet import *
 from scapy.layers.inet import IP
 from scapy.fields import BitField, ByteField, XShortField, IntField, XIntField
-from scapy.utils import checksum
-import struct, hmac, hashlib
+from scapy.utils import checksum, inet_aton
 
 class CARP(Packet):
     name = "CARP"
diff --git a/scapy/contrib/eigrp.uts b/scapy/contrib/eigrp.uts
index 77379679392821234c69ba34144b1d54470ef265..c19a56b7db419f8f024bf98c185a43a18418eb2d 100644
--- a/scapy/contrib/eigrp.uts
+++ b/scapy/contrib/eigrp.uts
@@ -60,6 +60,7 @@ f = EigrpIP6Field("ipaddr", "2000::", length=128)
 f.i2len(None, "") == 16
 
 = EIGRPGuessPayloadClass function: Return Parameters TLV
+from scapy.contrib.eigrp import _EIGRPGuessPayloadClass
 isinstance(_EIGRPGuessPayloadClass("\x00\x01"), EIGRPParam)
 
 = EIGRPGuessPayloadClass function: Return Authentication Data TLV
diff --git a/scapy/contrib/gsm_um.py b/scapy/contrib/gsm_um.py
index 923d80b79d321068d54941f993f0e44088311b67..36b6a4111198b0d1c668cbfb2ab3dfbedd2f3aef 100644
--- a/scapy/contrib/gsm_um.py
+++ b/scapy/contrib/gsm_um.py
@@ -35,7 +35,9 @@ from types import StringType
 #from  time import sleep
 import socket
 logging.getLogger("scapy").setLevel(1)
-from scapy.all import *
+
+from scapy.packet import *
+from scapy.fields import *
 
 # This method is intended to send gsm air packets. It uses a unix domain
 # socket. It opens a socket, sends the parameter to the socket and
@@ -2229,7 +2231,7 @@ def startCc(CallControlCapabilities_presence=0):
     packet = a / b
     if CallControlCapabilities_presence is 1:
         c = CallControlCapabilitiesHdr(ieiCCC=0x15, eightBitCCC=0x0)
-        packet = paclet / c
+        packet = packet / c
     return packet
 
 
@@ -12789,4 +12791,5 @@ class AttachType(Packet):
 
 
 if __name__ == "__main__":
+    from scapy.main import interact
     interact(mydict=globals(), mybanner="Scapy GSM-UM (Air) Addon")
diff --git a/scapy/contrib/icmp_extensions.py b/scapy/contrib/icmp_extensions.py
index d86ac2ce4e8242461002cd43c275c7e01412203a..56820898d65356203e778288ee2267fc9cf90e3c 100644
--- a/scapy/contrib/icmp_extensions.py
+++ b/scapy/contrib/icmp_extensions.py
@@ -1,8 +1,10 @@
-from scapy.contrib.mpls import MPLS
+import scapy
+from scapy.packet import Packet, bind_layers
 from scapy.fields import *
+from scapy.layers.inet import IP, ICMP
 from scapy.layers.inet6 import IP6Field
-from scapy.packet import Packet, bind_layers
 from scapy.utils import warning
+from scapy.contrib.mpls import MPLS
 
 
 class ICMPExtensionObject(Packet):
diff --git a/scapy/contrib/igmp.py b/scapy/contrib/igmp.py
index cc3dadc8c6fe9743227a8f011281efc19815dd8b..fe7b225bdd54f37083ae5f6d39f74115ba6e1041 100644
--- a/scapy/contrib/igmp.py
+++ b/scapy/contrib/igmp.py
@@ -7,7 +7,9 @@
 #  TODO: scapy 2 has function getmacbyip, maybe it can replace igmpize
 #          at least from the MAC layer
 
-from scapy.all import *
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import *
 
 #--------------------------------------------------------------------------
 def isValidMCAddr(ip):
diff --git a/scapy/contrib/igmpv3.py b/scapy/contrib/igmpv3.py
index dfdcf3a1a9061fb5111d8f9b71eb83e66115f889..dd41f992a20f8b32f54d2dcb784dabf34efaced9 100644
--- a/scapy/contrib/igmpv3.py
+++ b/scapy/contrib/igmpv3.py
@@ -6,6 +6,9 @@
 # scapy.contrib.status = loads
 
 from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import *
+from scapy.contrib.igmp import isValidMCAddr
 
 """ Based on the following references
  http://www.iana.org/assignments/igmp-type-numbers
@@ -25,7 +28,6 @@ from scapy.packet import *
 #
 
 #import sys, socket, struct, time
-from scapy.all import *
 print "IGMPv3  is still under development - Nov 2010"
 
 
diff --git a/scapy/contrib/ikev2.py b/scapy/contrib/ikev2.py
index 07d4dbb2a1661675406352f045d97a4cf61e8ad3..9b3f394ef4c21d3ffc2156551ba35bc74537e2a4 100644
--- a/scapy/contrib/ikev2.py
+++ b/scapy/contrib/ikev2.py
@@ -5,17 +5,17 @@
 # scapy.contrib.description = IKEv2
 # scapy.contrib.status = loads
 
-from scapy.all import *
 import logging
+import struct
 
 
 ## Modified from the original ISAKMP code by Yaron Sheffer <yaronf.ietf@gmail.com>, June 2010.
 
-import struct
 from scapy.packet import *
 from scapy.fields import *
 from scapy.ansmachine import *
 from scapy.layers.inet import IP,UDP
+from scapy.layers.isakmp import ISAKMP
 from scapy.sendrecv import sr
 
 # see http://www.iana.org/assignments/ikev2-parameters for details
@@ -358,4 +358,5 @@ def ikev2scan(ip):
 # conf.debug_dissector = 1
 
 if __name__ == "__main__":
+    from scapy.main import interact
     interact(mydict=globals(), mybanner="IKEv2 alpha-level protocol implementation")
diff --git a/scapy/contrib/isis.py b/scapy/contrib/isis.py
index 34325657db6e071f30cdccd243591242d54f6562..c37dd163d8db1294ac8c6c5880a0d553985d53a7 100644
--- a/scapy/contrib/isis.py
+++ b/scapy/contrib/isis.py
@@ -46,19 +46,13 @@
 """
 
 import struct
+import random
 
 from scapy.config import conf
-from scapy.fields import Field, FlagsField, ByteField, ByteEnumField, \
-    FieldLenField, ShortField, PacketListField, XIntField, \
-    XShortField, ConditionalField, ThreeBytesField, IntField, BitField, IPField, \
-    FieldListField, MACField, BitFieldLenField, IPPrefixField, IP6PrefixField,\
-    BoundStrLenField
+from scapy.fields import *
+from scapy.packet import *
 from scapy.layers.clns import network_layer_protocol_ids, register_cln_protocol
 from scapy.layers.inet6 import IP6ListField
-from scapy.packet import Packet, bind_layers
-from scapy.utils import fletcher16_checkbytes
-from scapy.volatile import RandString, RandByte
-import random
 
 
 EXT_VERSION = "v0.0.1"
@@ -772,4 +766,4 @@ bind_layers(ISIS_CommonHdr, ISIS_L2_LSP, hdrlen=27, pdutype=20)
 bind_layers(ISIS_CommonHdr, ISIS_L1_CSNP, hdrlen=33, pdutype=24)
 bind_layers(ISIS_CommonHdr, ISIS_L2_CSNP, hdrlen=33, pdutype=25)
 bind_layers(ISIS_CommonHdr, ISIS_L1_PSNP, hdrlen=17, pdutype=26)
-bind_layers(ISIS_CommonHdr, ISIS_L2_PSNP, hdrlen=17, pdutype=27)
\ No newline at end of file
+bind_layers(ISIS_CommonHdr, ISIS_L2_PSNP, hdrlen=17, pdutype=27)
diff --git a/scapy/contrib/modbus.py b/scapy/contrib/modbus.py
index 8f4e83dac019490385927f5688b54ad50e96ea4d..a6be7ff50fe1ab7314badf30285f17134b62bcd1 100644
--- a/scapy/contrib/modbus.py
+++ b/scapy/contrib/modbus.py
@@ -16,7 +16,9 @@
 
 # Copyright (C) 2016 Arthur Gervais, Ken LE PRADO, Sébastien Mainand
 
-from scapy.all import *
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import *
 
 # TODO: implement serial specific function codes
 
diff --git a/scapy/contrib/mpls.py b/scapy/contrib/mpls.py
index 7f1f85a3e7b6d739b6724c90fb58ff63745fccfc..640a0c57239e903a0b488589de58d0ae12a8e4a9 100644
--- a/scapy/contrib/mpls.py
+++ b/scapy/contrib/mpls.py
@@ -3,10 +3,11 @@
 # scapy.contrib.description = MPLS
 # scapy.contrib.status = loads
 
-from scapy.packet import Packet,bind_layers
+from scapy.packet import Packet, bind_layers, Padding
 from scapy.fields import BitField,ByteField
-from scapy.layers.l2 import Ether
-from scapy.layers.l2 import GRE
+from scapy.layers.inet import IP
+from scapy.layers.inet6 import IPv6
+from scapy.layers.l2 import Ether, GRE
 
 class MPLS(Packet):
    name = "MPLS"
diff --git a/scapy/contrib/openflow.py b/scapy/contrib/openflow.py
index 3e5fcf73281471fa8dde592b43091e5342285129..dd11630acfd95fbb7c618996cf18c63631a58aa3 100755
--- a/scapy/contrib/openflow.py
+++ b/scapy/contrib/openflow.py
@@ -12,8 +12,9 @@
 # scapy.contrib.status = loads
 
 import struct
-from scapy.all import *
-from scapy.utils import binrepr
+from scapy.fields import *
+from scapy.layers.l2 import *
+from scapy.layers.inet import *
 
 ### If prereq_autocomplete is True then match prerequisites will be
 ### automatically handled. See OFPMatch class.
diff --git a/scapy/contrib/openflow3.py b/scapy/contrib/openflow3.py
index 5df721adab6f75220e8639c4d2bbdec5b42e355f..9ef88587def5ea291872e34b3176f80911688122 100755
--- a/scapy/contrib/openflow3.py
+++ b/scapy/contrib/openflow3.py
@@ -12,7 +12,9 @@
 # scapy.contrib.status = loads
 
 import struct
-from scapy.all import *
+from scapy.fields import *
+from scapy.layers.l2 import *
+from scapy.layers.inet import *
 
 ### If prereq_autocomplete is True then match prerequisites will be
 ### automatically handled. See OFPMatch class.
diff --git a/scapy/contrib/ospf.py b/scapy/contrib/ospf.py
index 66c79b3ef1b83b3cbae24c59357d472b82ef59cf..7b10cea6f1d8b6104253e93ddce10567601c255f 100644
--- a/scapy/contrib/ospf.py
+++ b/scapy/contrib/ospf.py
@@ -24,7 +24,10 @@ GNU General Public License for more details.
 """
 
 
-from scapy.all import *
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import *
+from scapy.layers.inet6 import *
 
 EXT_VERSION = "v0.9.2"
 
@@ -746,4 +749,5 @@ DestIP6Field.bind_addr(OSPFv3_Hdr, "ff02::5")
 
 
 if __name__ == "__main__":
+    from scapy.main import interact
     interact(mydict=globals(), mybanner="OSPF extension %s" % EXT_VERSION)
diff --git a/scapy/contrib/send.py b/scapy/contrib/send.py
index 23f8c1cdcd45a98019b96050992799bb18499d92..676158a4373d2bec7443984cde3f90afe4897966 100644
--- a/scapy/contrib/send.py
+++ b/scapy/contrib/send.py
@@ -8,9 +8,11 @@
 # scapy.contrib.description = SEND
 # scapy.contrib.status = loads
 
+import socket
+
 from scapy.packet import *
 from scapy.fields import *
-from scapy.layers.inet6 import icmp6typescls, _ICMPv6NDGuessPayload
+from scapy.layers.inet6 import icmp6typescls, _ICMPv6NDGuessPayload, Net6
 
 send_icmp6typescls = { 11: "ICMPv6NDOptCGA",
                        12: "ICMPv6NDOptRsaSig",
diff --git a/scapy/contrib/skinny.py b/scapy/contrib/skinny.py
index 41cbaa0afb49abe58b60fd0aaf3b7370e9bb84fa..1ed02e42f31ef4bbc6ae4f7fc97e7955dc7049a5 100644
--- a/scapy/contrib/skinny.py
+++ b/scapy/contrib/skinny.py
@@ -22,8 +22,9 @@
 ##                                                                         ##
 #############################################################################
 
-from scapy.all import *
-import __builtin__
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import TCP
 
 #####################################################################
 # Helpers and constants
@@ -474,7 +475,7 @@ class Skinny(Packet):
     name="Skinny"
     fields_desc = [ LEIntField("len", None),
                     LEIntField("res",0),
-                    LEIntEnumField("msg",0, skinny_messages) ]
+                    LEIntEnumField("msg",0, skinny_messages_cls) ]
 
     def post_build(self, pkt, p):
         if self.len is None:
@@ -495,5 +496,6 @@ bind_layers(TCP, Skinny, { "dport": 2000 } )
 bind_layers(TCP, Skinny, { "sport": 2000 } )
 
 if __name__ == "__main__":
+    from scapy.main import interact
     interact(mydict=globals(),mybanner="Welcome to Skinny add-on")
 
diff --git a/scapy/contrib/spbm.py b/scapy/contrib/spbm.py
index efd4848823e0c0ae8a1d60c06f962a5ed1bc11fb..44ae942d3247791e3ec7989331f5fa2869295367 100644
--- a/scapy/contrib/spbm.py
+++ b/scapy/contrib/spbm.py
@@ -19,8 +19,8 @@
 # spb_example = backboneEther/backboneDot1Q/backboneServiceID/customerEther/customerDot1Q/customerIP/customerUDP/"Payload"
 
 from scapy.packet import Packet, bind_layers
-from scapy.layers.l2 import Ether
 from scapy.fields import *
+from scapy.layers.l2 import Ether, Dot1Q
 
 class SPBM(Packet):
     name = "SPBM"
@@ -35,4 +35,4 @@ class SPBM(Packet):
         return self.sprintf("SPBM (isid=%SPBM.isid%")
 
 bind_layers(Dot1Q, SPBM, type=0x88e7)
-bind_layers(SPBM, Ether)
\ No newline at end of file
+bind_layers(SPBM, Ether)
diff --git a/scapy/contrib/vtp.py b/scapy/contrib/vtp.py
index af5c282366a9a6a812f7f8b9e79c4793bdbc29e0..0ebb17d8227a1a570d604e1aac7cfc01fefe9b67 100644
--- a/scapy/contrib/vtp.py
+++ b/scapy/contrib/vtp.py
@@ -42,7 +42,9 @@
         http://www.cisco.com/en/US/tech/tk389/tk689/technologies_tech_note09186a0080094c52.shtml
 """
 
-from scapy.all import *
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.l2 import *
 
 _VTP_VLAN_TYPE = {
             1 : 'Ethernet',
@@ -168,4 +170,5 @@ class VTP(Packet):
 bind_layers(SNAP, VTP, code=0x2003)
 
 if __name__ == '__main__':
+    from scapy.main import interact
     interact(mydict=globals(), mybanner="VTP")
diff --git a/scapy/dadict.py b/scapy/dadict.py
index f50ccfb1134f10bfa221bc3685c34c1491fae59e..62addb31057236b65c59aee7eda798910a31e9ca 100644
--- a/scapy/dadict.py
+++ b/scapy/dadict.py
@@ -7,7 +7,7 @@
 Direct Access dictionary.
 """
 
-from error import Scapy_Exception
+from scapy.error import Scapy_Exception
 
 ###############################
 ## Direct Access dictionnary ##
diff --git a/scapy/data.py b/scapy/data.py
index 643ba964471b0fe3cae442236042e7069da69a75..890b00af731584df723823f7204c031948edf29b 100644
--- a/scapy/data.py
+++ b/scapy/data.py
@@ -8,8 +8,8 @@ Global variables and functions for handling external data sets.
 """
 
 import os,sys,re
-from dadict import DADict
-from error import log_loading
+from scapy.dadict import DADict
+from scapy.error import log_loading
 
 ############
 ## Consts ##
diff --git a/scapy/error.py b/scapy/error.py
index 29ebc1ba036c60485723fb9793e416a30f15dd3e..ee879d53c6a7fcf1393018bc7d1deb1b5420f239 100644
--- a/scapy/error.py
+++ b/scapy/error.py
@@ -21,7 +21,7 @@ class ScapyFreqFilter(logging.Filter):
         logging.Filter.__init__(self)
         self.warning_table = {}
     def filter(self, record):        
-        from config import conf
+        from scapy.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 e7a2ed5593ae8ae6e6a0b08242796456c67b4764..0a92cef86350ea464e0f3b0ee45a9e6f7c509068 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -8,11 +8,11 @@ Fields: basic data structures that make up parts of packets.
 """
 
 import struct,copy,socket
-from config import conf
-from volatile import *
-from data import *
-from utils import *
-from base_classes import BasePacket, Gen, Net, Field_metaclass
+from scapy.config import conf
+from scapy.volatile import *
+from scapy.data import *
+from scapy.utils import *
+from scapy.base_classes import BasePacket, Gen, Net, Field_metaclass
 
 
 ############
@@ -630,7 +630,7 @@ class FieldLenField(Field):
         self.count_of = count_of
         self.adjust = adjust
         if fld is not None:
-            FIELD_LENGTH_MANAGEMENT_DEPRECATION(self.__class__.__name__)
+            #FIELD_LENGTH_MANAGEMENT_DEPRECATION(self.__class__.__name__)
             self.length_of = fld
     def i2m(self, pkt, x):
         if x is None:
diff --git a/scapy/layers/bluetooth.py b/scapy/layers/bluetooth.py
index db91e5dad9700bde5e6086987fe7c3d004656e30..9d7e496365caee7f02fabadc9e144625a9c6c596 100644
--- a/scapy/layers/bluetooth.py
+++ b/scapy/layers/bluetooth.py
@@ -10,13 +10,14 @@ Bluetooth layers, sockets and send/receive functions.
 
 import socket,struct,array
 from ctypes import *
+from select import select
 
 from scapy.config import conf
 from scapy.packet import *
 from scapy.fields import *
 from scapy.supersocket import SuperSocket
+from scapy.sendrecv import sndrcv
 from scapy.data import MTU
-from select import select
 
 ##########
 # Fields #
diff --git a/scapy/layers/dhcp.py b/scapy/layers/dhcp.py
index ebd8f67c50e3d87965c13e701dad0223a5b26b5b..612d72f75cff832285058f295756e39b78258e7b 100644
--- a/scapy/layers/dhcp.py
+++ b/scapy/layers/dhcp.py
@@ -12,13 +12,14 @@ import struct
 from scapy.packet import *
 from scapy.fields import *
 from scapy.ansmachine import *
+from scapy.data import *
 from scapy.layers.inet import UDP,IP
 from scapy.layers.l2 import Ether
 from scapy.base_classes import Net
 from scapy.volatile import RandField
 
 from scapy.arch import get_if_raw_hwaddr
-from scapy.sendrecv import srp1
+from scapy.sendrecv import *
 
 dhcpmagic="c\x82Sc"
 
diff --git a/scapy/layers/dhcp6.py b/scapy/layers/dhcp6.py
index 32f28d6ebf2f31b398239c1f6cc89c2f4990b324..40ecedc1f551666185997ce53f8b3863239ed78b 100644
--- a/scapy/layers/dhcp6.py
+++ b/scapy/layers/dhcp6.py
@@ -11,11 +11,15 @@ DHCPv6: Dynamic Host Configuration Protocol for IPv6. [RFC 3315]
 """
 
 import socket
+
 from scapy.packet import *
 from scapy.fields import *
+from scapy.data import *
 from scapy.utils6 import *
+from scapy.themes import Color
 from scapy.layers.inet6 import *
 from scapy.ansmachine import AnsweringMachine
+from scapy.sendrecv import *
 
 #############################################################################
 # Helpers                                                                  ##
@@ -657,57 +661,6 @@ class DHCP6OptReconfAccept(_DHCP6OptGuessPayload):   # RFC sect 22.20
     fields_desc = [ ShortEnumField("optcode", 20, dhcp6opts),
                     ShortField("optlen", 0)]
 
-# As required in Sect 8. of RFC 3315, Domain Names must be encoded as 
-# described in section 3.1 of RFC 1035
-# XXX Label should be at most 63 octets in length : we do not enforce it
-#     Total length of domain should be 255 : we do not enforce it either
-class DomainNameListField(StrLenField):
-    __slots__ = ["padded"]
-    islist = 1
-    padded_unit = 8
-
-    def __init__(self, name, default, fld=None, length_from=None, padded=False):
-        self.padded = padded
-        StrLenField.__init__(self, name, default, fld, length_from)
-
-    def i2len(self, pkt, x):
-        return len(self.i2m(pkt, x))
-
-    def m2i(self, pkt, x):
-        res = []
-        while x:
-            # Get a name until \x00 is reached
-            cur = []
-            while x and x[0] != '\x00':
-                l = ord(x[0])
-                cur.append(x[1:l+1])
-                x = x[l+1:]
-            if self.padded:
-              # Discard following \x00 in padded mode
-              if len(cur):
-                res.append(".".join(cur) + ".")
-            else:
-              # Store the current name
-              res.append(".".join(cur) + ".")
-            if x and x[0] == '\x00':
-                x = x[1:]
-        return res
-
-    def i2m(self, pkt, x):
-        def conditionalTrailingDot(z):
-            if z and z[-1] == '\x00':
-                return z
-            return z+'\x00'
-        # Build the encode names
-        tmp = map(lambda y: map((lambda z: chr(len(z))+z), y.split('.')), x)
-        ret_string  = "".join(map(lambda x: conditionalTrailingDot("".join(x)), tmp))
-
-        # In padded mode, add some \x00 bytes
-        if self.padded and not len(ret_string) % self.padded_unit == 0:
-            ret_string += "\x00" * (self.padded_unit - len(ret_string) % self.padded_unit)
-
-        return ret_string
-
 class DHCP6OptSIPDomains(_DHCP6OptGuessPayload):       #RFC3319
     name = "DHCP6 Option - SIP Servers Domain Name List"
     fields_desc = [ ShortEnumField("optcode", 21, dhcp6opts),
diff --git a/scapy/layers/dns.py b/scapy/layers/dns.py
index ac7d4ad58124eed26dd141583f968b0a11234e86..2532633a41d2e005bce4282c78ba3c576bbe5f99 100644
--- a/scapy/layers/dns.py
+++ b/scapy/layers/dns.py
@@ -9,9 +9,11 @@ DNS: Domain Name System.
 
 import socket,struct
 
+from scapy.config import conf
 from scapy.packet import *
 from scapy.fields import *
 from scapy.ansmachine import *
+from scapy.sendrecv import sr1
 from scapy.layers.inet import IP, DestIPField, UDP
 from scapy.layers.inet6 import DestIP6Field
 
diff --git a/scapy/layers/dot11.py b/scapy/layers/dot11.py
index df91e104516b7a1ff5307e72852107d75bbca622..27e84dbcff885b21df9b99f908da64fb6dba0b73 100644
--- a/scapy/layers/dot11.py
+++ b/scapy/layers/dot11.py
@@ -8,11 +8,16 @@ Wireless LAN according to IEEE 802.11.
 """
 
 import re,struct
+from zlib import crc32
 
+from scapy.config import conf
+from scapy.data import *
 from scapy.packet import *
 from scapy.fields import *
+from scapy.ansmachine import *
 from scapy.plist import PacketList
 from scapy.layers.l2 import *
+from scapy.layers.inet import IP, TCP
 
 
 try:
@@ -441,11 +446,11 @@ iwconfig wlan0 mode managed
         p /= self.replace
         q.ID += 1
         q.getlayer(TCP).flags="RA"
-        q.getlayer(TCP).seq+=len(replace)
+        q.getlayer(TCP).seq+=len(self.replace)
         return [p,q]
     
     def print_reply(self):
-        print p.sprintf("Sent %IP.src%:%IP.sport% > %IP.dst%:%TCP.dport%")
+        print self.sprintf("Sent %IP.src%:%IP.sport% > %IP.dst%:%TCP.dport%")
 
     def send_reply(self, reply):
         sendp(reply, iface=self.ifto, **self.optsend)
diff --git a/scapy/layers/inet.py b/scapy/layers/inet.py
index cf5cbbff4a962753fb6489e4e40bc20d88f809f0..7f080acb20d0f258ef392085a05ad03bba2a09d3 100644
--- a/scapy/layers/inet.py
+++ b/scapy/layers/inet.py
@@ -11,7 +11,9 @@ import os,time,struct,re,socket,new
 from select import select
 from collections import defaultdict
 
-from scapy.utils import checksum
+from scapy.utils import checksum,inet_aton,inet_ntoa
+from scapy.base_classes import Gen
+from scapy.data import *
 from scapy.layers.l2 import *
 from scapy.config import conf
 from scapy.fields import *
@@ -20,6 +22,7 @@ from scapy.volatile import *
 from scapy.sendrecv import sr,sr1,srp1
 from scapy.plist import PacketList,SndRcvList
 from scapy.automaton import Automaton,ATMT
+from scapy.error import warning
 
 import scapy.as_resolvers
 
diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py
index d64496cc9880f47ab90e78ee0065ab55e6728b4b..ec2c94a13c25aed548cfb8c3fec87173599a5922 100644
--- a/scapy/layers/inet6.py
+++ b/scapy/layers/inet6.py
@@ -24,7 +24,9 @@ IPv6 (Internet Protocol v6).
 """
 
 
+import random
 import socket
+import sys
 if not socket.has_ipv6:
     raise socket.error("can't use AF_INET6, IPv6 is disabled")
 if not hasattr(socket, "IPPROTO_IPV6"):
@@ -35,8 +37,8 @@ if not hasattr(socket, "IPPROTO_IPIP"):
     socket.IPPROTO_IPIP = 4
 
 from scapy.config import conf
-from scapy.layers.l2 import *
-from scapy.layers.inet import *
+from scapy.base_classes import *
+from scapy.data import *
 from scapy.fields import *
 from scapy.packet import *
 from scapy.volatile import *
@@ -45,6 +47,10 @@ from scapy.as_resolvers import AS_resolver_riswhois
 from scapy.supersocket import SuperSocket,L3RawSocket
 from scapy.arch import *
 from scapy.utils6 import *
+from scapy.layers.l2 import *
+from scapy.layers.inet import *
+from scapy.utils import inet_pton, inet_ntop, strxor
+from scapy.error import warning
 
 
 #############################################################################
@@ -1649,7 +1655,7 @@ class ICMPv6NDOptMAP(_ICMPv6NDGuessPayload, Packet):     # RFC 4140
                     IP6Field("addr", "::") ] 
 
 
-class IP6PrefixField(IP6Field):
+class _IP6PrefixField(IP6Field):
     __slots__ = ["length_from"]
     def __init__(self, name, default):
         IP6Field.__init__(self, name, default)
@@ -1696,7 +1702,7 @@ class ICMPv6NDOptRouteInfo(_ICMPv6NDGuessPayload, Packet): # RFC 4191
                     BitField("prf",0,2),
                     BitField("res2",0,3),
                     IntField("rtlifetime", 0xffffffff),
-                    IP6PrefixField("prefix", None) ]
+                    _IP6PrefixField("prefix", None) ]
   
 class ICMPv6NDOptRDNSS(_ICMPv6NDGuessPayload, Packet): # RFC 5006
     name = "ICMPv6 Neighbor Discovery Option - Recursive DNS Server Option"
@@ -1714,7 +1720,57 @@ class ICMPv6NDOptEFA(_ICMPv6NDGuessPayload, Packet): # RFC 5175 (prev. 5075)
                     ByteField("len", 1),
                     BitField("res", 0, 48) ]
 
-from scapy.layers.dhcp6 import DomainNameListField
+# As required in Sect 8. of RFC 3315, Domain Names must be encoded as
+# described in section 3.1 of RFC 1035
+# XXX Label should be at most 63 octets in length : we do not enforce it
+#     Total length of domain should be 255 : we do not enforce it either
+class DomainNameListField(StrLenField):
+    __slots__ = ["padded"]
+    islist = 1
+    padded_unit = 8
+
+    def __init__(self, name, default, fld=None, length_from=None, padded=False):
+        self.padded = padded
+        StrLenField.__init__(self, name, default, fld, length_from)
+
+    def i2len(self, pkt, x):
+        return len(self.i2m(pkt, x))
+
+    def m2i(self, pkt, x):
+        res = []
+        while x:
+            # Get a name until \x00 is reached
+            cur = []
+            while x and x[0] != '\x00':
+                l = ord(x[0])
+                cur.append(x[1:l+1])
+                x = x[l+1:]
+            if self.padded:
+              # Discard following \x00 in padded mode
+              if len(cur):
+                res.append(".".join(cur) + ".")
+            else:
+              # Store the current name
+              res.append(".".join(cur) + ".")
+            if x and x[0] == '\x00':
+                x = x[1:]
+        return res
+
+    def i2m(self, pkt, x):
+        def conditionalTrailingDot(z):
+            if z and z[-1] == '\x00':
+                return z
+            return z+'\x00'
+        # Build the encode names
+        tmp = map(lambda y: map((lambda z: chr(len(z))+z), y.split('.')), x)
+        ret_string  = "".join(map(lambda x: conditionalTrailingDot("".join(x)), tmp))
+
+        # In padded mode, add some \x00 bytes
+        if self.padded and not len(ret_string) % self.padded_unit == 0:
+            ret_string += "\x00" * (self.padded_unit - len(ret_string) % self.padded_unit)
+
+        return ret_string
+
 class ICMPv6NDOptDNSSL(_ICMPv6NDGuessPayload, Packet): # RFC 6106
     name = "ICMPv6 Neighbor Discovery Option - DNS Search List Option"
     fields_desc = [ ByteField("type", 31),
diff --git a/scapy/layers/isakmp.py b/scapy/layers/isakmp.py
index 4d96a6268cdebf20885769c25232854179719f09..17e538ddcdc91229fb464c0bfc713e4f3680f06a 100644
--- a/scapy/layers/isakmp.py
+++ b/scapy/layers/isakmp.py
@@ -8,6 +8,7 @@ ISAKMP (Internet Security Association and Key Management Protocol).
 """
 
 import struct
+from scapy.config import conf
 from scapy.packet import *
 from scapy.fields import *
 from scapy.ansmachine import *
diff --git a/scapy/layers/l2.py b/scapy/layers/l2.py
index 5ddc803b47d6a4a9c5f3f21c153f91245e425949..db4793141c9f7b8fe9979067b7ad989e0f8c4cab 100644
--- a/scapy/layers/l2.py
+++ b/scapy/layers/l2.py
@@ -11,12 +11,14 @@ import os, struct, time, socket
 
 from scapy.base_classes import Net
 from scapy.config import conf
+from scapy.data import *
 from scapy.packet import *
 from scapy.ansmachine import *
 from scapy.plist import SndRcvList
 from scapy.fields import *
-from scapy.sendrecv import srp,srp1
+from scapy.sendrecv import *
 from scapy.arch import get_if_hwaddr
+from scapy.utils import inet_ntoa, inet_aton
 
 
 
diff --git a/scapy/layers/sctp.py b/scapy/layers/sctp.py
index 49d441226ca2b0230fd7356a1c09662a540da411..ff0b0946efe0bf8355be7d5b7af04807b3d7b8bc 100644
--- a/scapy/layers/sctp.py
+++ b/scapy/layers/sctp.py
@@ -10,6 +10,7 @@ SCTP (Stream Control Transmission Protocol).
 
 import struct
 
+from scapy.config import conf
 from scapy.packet import *
 from scapy.fields import *
 from scapy.layers.inet import IP
diff --git a/scapy/layers/snmp.py b/scapy/layers/snmp.py
index 2c58825036b0351a94e187aba23db7cd43127d69..37bcdfe13d0ade11ff70f7a43c44f26e81cff4f9 100644
--- a/scapy/layers/snmp.py
+++ b/scapy/layers/snmp.py
@@ -7,9 +7,14 @@
 SNMP (Simple Network Management Protocol).
 """
 
+from scapy.packet import *
 from scapy.asn1packet import *
 from scapy.asn1fields import *
-from scapy.layers.inet import UDP
+from scapy.asn1.asn1 import *
+from scapy.asn1.ber import *
+from scapy.sendrecv import sr1
+from scapy.volatile import *
+from scapy.layers.inet import UDP, IP, ICMP
 
 ##########
 ## SNMP ##
diff --git a/scapy/layers/tftp.py b/scapy/layers/tftp.py
index 9a2aa0a5c21f4a4ae06bab9171770f147f1a27ce..4727108b2190afd0b52aaed88ebf2a702a4f223b 100644
--- a/scapy/layers/tftp.py
+++ b/scapy/layers/tftp.py
@@ -11,7 +11,7 @@ import os,random
 from scapy.packet import *
 from scapy.fields import *
 from scapy.automaton import *
-from scapy.layers.inet import UDP
+from scapy.layers.inet import UDP, IP
 
 
 
diff --git a/scapy/layers/x509.py b/scapy/layers/x509.py
index a5ca38ccbeb6253c9f577e869f0fbcd1fe2e0812..ee14bc43d24ced4e00f6551d64bcb1df30e07171 100644
--- a/scapy/layers/x509.py
+++ b/scapy/layers/x509.py
@@ -8,9 +8,13 @@
 X.509 certificates.
 """
 
+from scapy.asn1.asn1 import *
+from scapy.asn1.ber import *
 from scapy.asn1packet import *
 from scapy.asn1fields import *
+from scapy.packet import Packet
 from scapy.fields import PacketField
+from scapy.volatile import *
 
 class ASN1P_OID(ASN1_Packet):
     ASN1_codec = ASN1_Codecs.BER
diff --git a/scapy/main.py b/scapy/main.py
index 63c615c11db1ad1efd7b1ebdce314257163aa217..4337cdd5ebf8547b2504bc2df326b4cfc07d3257 100644
--- a/scapy/main.py
+++ b/scapy/main.py
@@ -10,9 +10,13 @@ Main module for interactive startup.
 from __future__ import generators
 import os,sys
 import glob
+import types
+import gzip
+import cPickle
 import __builtin__
-from error import *
-import utils
+
+from scapy.error import *
+from scapy import utils
     
 
 def _probe_config_file(cf):
@@ -44,8 +48,8 @@ def _usage():
     sys.exit(0)
 
 
-from config import conf
-from themes import DefaultTheme
+from scapy.config import conf
+from scapy.themes import DefaultTheme
 
 
 ######################
@@ -178,8 +182,8 @@ def scapy_write_history_file(readline):
 
 def interact(mydict=None,argv=None,mybanner=None,loglevel=20):
     global session
-    import code,sys,cPickle,os,getopt,re
-    from config import conf
+    import code,sys,os,getopt,re
+    from scapy.config import conf
     conf.interactive = True
     if loglevel is not None:
         conf.logLevel=loglevel
@@ -220,6 +224,7 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=20):
                     object = eval(expr)
                 except:
                     object = eval(expr, session)
+                from scapy.packet import Packet, Packet_metaclass
                 if isinstance(object, Packet) or isinstance(object, Packet_metaclass):
                     words = filter(lambda x: x[0]!="_",dir(object))
                     words += [x.name for x in object.fields_desc]
diff --git a/scapy/modules/nmap.py b/scapy/modules/nmap.py
index 4ff1a56a68c22b2c82cc6a4fac1992a6315d59cb..0eeafdbdaa171df98b97e7323f4d60fbbca0c15c 100644
--- a/scapy/modules/nmap.py
+++ b/scapy/modules/nmap.py
@@ -12,6 +12,9 @@ import os
 from scapy.data import KnowledgeBase
 from scapy.config import conf
 from scapy.arch import WINDOWS
+from scapy.error import warning
+from scapy.layers.inet import IP, TCP, UDP, ICMP, UDPerror, IPerror
+from scapy.sendrecv import sr
 
 
 if WINDOWS:
diff --git a/scapy/modules/p0f.py b/scapy/modules/p0f.py
index 2585adb6bc418ea8a17e6837a293f8aaa476131a..a93482d78bc7cd0a5a13f76e1874ea84647dfb3f 100644
--- a/scapy/modules/p0f.py
+++ b/scapy/modules/p0f.py
@@ -7,10 +7,19 @@
 Clone of p0f passive OS fingerprinting
 """
 
+import time
+import struct
+import os
+import socket
+import random
+
 from scapy.data import KnowledgeBase
 from scapy.config import conf
 from scapy.layers.inet import IP, TCP, TCPOptions
-from scapy.packet import NoPayload
+from scapy.packet import NoPayload, Packet
+from scapy.error import warning, Scapy_Exception, log_runtime
+from scapy.volatile import RandInt, RandByte, RandChoice, RandNum, RandShort, RandString
+from scapy.sendrecv import sniff
 
 conf.p0f_base ="/etc/p0f/p0f.fp"
 conf.p0fa_base ="/etc/p0f/p0fa.fp"
diff --git a/scapy/modules/queso.py b/scapy/modules/queso.py
index ebc5486e13878b1a853612707ae910c5db0264e4..9c38f42735e3c27a6b92186d7b3e5755b162164d 100644
--- a/scapy/modules/queso.py
+++ b/scapy/modules/queso.py
@@ -10,6 +10,9 @@ Clone of queso OS fingerprinting
 from scapy.data import KnowledgeBase
 from scapy.config import conf
 from scapy.layers.inet import IP,TCP
+from scapy.error import warning
+from scapy.volatile import RandInt
+from scapy.sendrecv import sr
 #from 
 
 conf.queso_base ="/etc/queso.conf"
diff --git a/scapy/modules/voip.py b/scapy/modules/voip.py
index de9ed1d3553b4ce679314f6d169285e13d0a2e99..52c7893daee017d738e8f6c076df6122ab2e8d3b 100644
--- a/scapy/modules/voip.py
+++ b/scapy/modules/voip.py
@@ -94,6 +94,7 @@ def voip_play1(s1,list=None,**kargs):
             return 
         ip=pkt.getlayer(IP)
         if s1 in [ip.src, ip.dst]:
+            from scapy.config import conf
             dsp.write(pkt.getlayer(conf.raw_layer).load[12:])
     try:
         if list is None:
@@ -137,6 +138,7 @@ def voip_play3(lst=None,**kargs):
     dsp,rd = os.popen2("sox -t .ul - -t ossdsp /dev/dsp")
     try:
         def play(pkt, dsp=dsp):
+            from scapy.config import conf
             if pkt and pkt.haslayer(UDP) and pkt.haslayer(conf.raw_layer):
                 dsp.write(pkt.getlayer(RTP).load)
         if lst is None:
diff --git a/scapy/packet.py b/scapy/packet.py
index 611c373e5f7acfaef9da4fb1c9f8f3d43e81e2f5..f3739c8f2d0090a9da157a5b183a23406b36a32a 100644
--- a/scapy/packet.py
+++ b/scapy/packet.py
@@ -10,16 +10,16 @@ Packet class. Binding mechanism. fuzz() method.
 import re
 import time,itertools
 import copy
-from fields import StrField, ConditionalField, Emph, PacketListField, BitField, \
-    MultiEnumField, EnumField, FlagsField
-from themes import AnsiColorTheme
-from config import conf
-from base_classes import BasePacket, Gen, SetGen, Packet_metaclass
-from volatile import VolatileValue
-from utils import import_hexcap,tex_escape,colgen,get_temp_file
-from error import Scapy_Exception,log_runtime
 import subprocess
 
+from scapy.fields import StrField, ConditionalField, Emph, PacketListField, BitField, \
+    MultiEnumField, EnumField, FlagsField
+from scapy.config import conf
+from scapy.base_classes import BasePacket, Gen, SetGen, Packet_metaclass
+from scapy.volatile import VolatileValue
+from scapy.utils import import_hexcap,tex_escape,colgen,get_temp_file
+from scapy.error import Scapy_Exception,log_runtime
+
 try:
     import pyx
 except ImportError:
@@ -845,6 +845,7 @@ Creates an EPS file describing a packet. If filename is not provided a temporary
         """
 
         if dump:
+            from scapy.themes import AnsiColorTheme
             ct = AnsiColorTheme() # No color for dump output
         else:
             ct = conf.color_theme
diff --git a/scapy/pipetool.py b/scapy/pipetool.py
index 7b85dd7830104e430ca183769f2a4a4eebda6d7c..fb6f6179549e04dc510138f27a46acec91854a39 100644
--- a/scapy/pipetool.py
+++ b/scapy/pipetool.py
@@ -7,15 +7,16 @@
 
 from __future__ import with_statement
 
-import scapy.utils
-from scapy.config import conf
 import os,thread,select
 import subprocess
 import itertools
 import collections
 import time
-from scapy.error import log_interactive,warning
 import Queue
+import scapy.utils
+
+from scapy.error import log_interactive,warning
+from scapy.config import conf
 
 class PipeEngine:
     pipes = {}
@@ -262,6 +263,7 @@ class Source(Pipe):
         Pipe.__init__(self, name=name)
         self.is_exhausted = False
     def _read_message(self):
+        from scapy.automaton import Message
         return Message()
     def deliver(self):
         msg = self._read_message
diff --git a/scapy/plist.py b/scapy/plist.py
index 5e3fdea5afc679e58b990de8ad403bd6890c3fb1..9c754f411e9df61294f0942827b714204e42e7cb 100644
--- a/scapy/plist.py
+++ b/scapy/plist.py
@@ -9,11 +9,11 @@ PacketList: holds several packets and allows to do operations on them.
 
 
 import os,subprocess
-from config import conf
-from base_classes import BasePacket,BasePacketList
 from collections import defaultdict
 
-from utils import do_graph,hexdump,make_table,make_lined_table,make_tex_table,get_temp_file
+from scapy.config import conf
+from scapy.base_classes import BasePacket,BasePacketList
+from scapy.utils import do_graph,hexdump,make_table,make_lined_table,make_tex_table,get_temp_file
 
 from scapy.arch import plt, MATPLOTLIB_INLINED, MATPLOTLIB_DEFAULT_PLOT_KARGS
 
@@ -293,10 +293,10 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
         prog: which graphviz program to use"""
         if getsrcdst is None:
             def getsrcdst(pkt):
-                if IP in pkt:
-                    return (pkt[IP].src, pkt[IP].dst)
-                if ARP in pkt:
-                    return (pkt[ARP].psrc, pkt[ARP].pdst)
+                if 'IP' in pkt:
+                    return (pkt['IP'].src, pkt['IP'].dst)
+                if 'ARP' in pkt:
+                    return (pkt['ARP'].psrc, pkt['ARP'].pdst)
                 raise TypeError()
         conv = {}
         for p in self.res:
@@ -546,10 +546,3 @@ class SndRcvList(PacketList):
         return elt[1]
     def _elt2sum(self, elt):
         return "%s ==> %s" % (elt[0].summary(),elt[1].summary()) 
-
-
-
-    
-
-        
-                                                                               
diff --git a/scapy/pton_ntop.py b/scapy/pton_ntop.py
index 1bd88920e15f939725030eed1e22ce366b7e7dae..ce93b6768b75520bfcc32a2355c0724fc833f75d 100644
--- a/scapy/pton_ntop.py
+++ b/scapy/pton_ntop.py
@@ -15,7 +15,7 @@ import socket,struct
 def inet_pton(af, addr):
     """Convert an IP address from text representation into binary form"""
     if af == socket.AF_INET:
-        return inet_aton(addr)
+        return socket.inet_aton(addr)
     elif af == socket.AF_INET6:
         # IPv6: The use of "::" indicates one or more groups of 16 bits of zeros.
         # We deal with this form of wildcard using a special marker. 
@@ -63,7 +63,7 @@ def inet_pton(af, addr):
 def inet_ntop(af, addr):
     """Convert an IP address from binary form into text represenation"""
     if af == socket.AF_INET:
-        return inet_ntoa(addr)
+        return socket.inet_ntoa(addr)
     elif af == socket.AF_INET6:
         # IPv6 addresses have 128bits (16 bytes)
         if len(addr) != 16:
diff --git a/scapy/route.py b/scapy/route.py
index 170de483303696c8f2300a8433bfd2bea3400b6e..1e426a7a0b45f2f9f0168afbc63f138f72ae048c 100644
--- a/scapy/route.py
+++ b/scapy/route.py
@@ -8,10 +8,10 @@ Routing and handling of network interfaces.
 """
 
 import socket
-from arch import read_routes,get_if_addr,LOOPBACK_NAME
-from utils import atol,ltoa,itom
-from config import conf
-from error import Scapy_Exception,warning
+from scapy.arch import read_routes,get_if_addr,LOOPBACK_NAME
+from scapy.utils import atol,ltoa,itom
+from scapy.config import conf
+from scapy.error import Scapy_Exception,warning
 
 ##############################
 ## Routing/Interfaces stuff ##
diff --git a/scapy/route6.py b/scapy/route6.py
index 341a7c3ee6a2d3daa0d6b27f4dc003d5893657c0..82c6f8f350ea13d621d24775660775df42140012 100644
--- a/scapy/route6.py
+++ b/scapy/route6.py
@@ -17,9 +17,11 @@ Routing and network interface handling for IPv6.
 #############################################################################
 
 import socket
-from config import conf
-from utils6 import *
-from arch import *
+from scapy.config import conf
+from scapy.utils6 import *
+from scapy.arch import *
+from scapy.pton_ntop import *
+from scapy.error import warning, log_loading
 
 
 class Route6:
diff --git a/scapy/scapypipes.py b/scapy/scapypipes.py
index 94bd401abc990ec2c6a2f5be1e5af14af30f5547..9af8193e4da5e76d8f70ba1b563547989c5dd191 100644
--- a/scapy/scapypipes.py
+++ b/scapy/scapypipes.py
@@ -3,8 +3,9 @@
 ## Copyright (C) Philippe Biondi <phil@secdev.org>
 ## This program is published under a GPLv2 license
 
-from pipetool import Source,Drain,Sink
-from config import conf
+from scapy.pipetool import Source,Drain,Sink
+from scapy.config import conf
+from scapy.utils import PcapReader, PcapWriter
 
 
 class SniffSource(Source):
@@ -114,10 +115,12 @@ class UDPDrain(Drain):
         self.port = port
 
     def push(self, msg):
+        from scapy.layers.inet import IP, UDP
         if IP in msg and msg[IP].proto == 17 and UDP in msg:
             payload = msg[UDP].payload
             self._high_send(str(payload))
     def high_push(self, msg):
+        from scapy.layers.inet import IP, UDP
         p = IP(dst=self.ip)/UDP(sport=1234,dport=self.port)/msg
         self._send(p)
         
diff --git a/scapy/sendrecv.py b/scapy/sendrecv.py
index 292274099bfc9ac4a59a0ab3e75e7249b076400a..474bcccd50dc7867efc452f93e69fbf805d939ad 100644
--- a/scapy/sendrecv.py
+++ b/scapy/sendrecv.py
@@ -11,15 +11,15 @@ import errno
 import cPickle,os,sys,time,subprocess
 import itertools
 from select import select
-from data import *
-import arch
-from config import conf
-from packet import Gen
-from utils import warning,get_temp_file,PcapReader,wrpcap
-import plist
-from error import log_runtime,log_interactive
-from base_classes import SetGen
-from supersocket import StreamSocket
+from scapy.data import *
+from scapy import arch
+from scapy.config import conf
+from scapy.packet import Gen
+from scapy.utils import warning,get_temp_file,PcapReader,wrpcap
+from scapy import plist
+from scapy.error import log_runtime,log_interactive
+from scapy.base_classes import SetGen
+from scapy.supersocket import StreamSocket
 
 #################
 ## Debug class ##
diff --git a/scapy/supersocket.py b/scapy/supersocket.py
index 6e84419796346cb9f3287c2576bd3d538dad459f..3fd0fef5f08402d038c94f3c3d55ec2feadbe6bd 100644
--- a/scapy/supersocket.py
+++ b/scapy/supersocket.py
@@ -8,8 +8,9 @@ SuperSocket.
 """
 
 import socket,time
-from config import conf
-from data import *
+
+from scapy.config import conf
+from scapy.data import *
 from scapy.error import warning, log_runtime
 
 class _SuperSocket_metaclass(type):
@@ -47,14 +48,17 @@ class SuperSocket:
         if self.ins and self.ins.fileno() != -1:
             self.ins.close()
     def sr(self, *args, **kargs):
+        from scapy import sendrecv
         return sendrecv.sndrcv(self, *args, **kargs)
     def sr1(self, *args, **kargs):        
+        from scapy import sendrecv
         a,b = sendrecv.sndrcv(self, *args, **kargs)
         if len(a) > 0:
             return a[0][1]
         else:
             return None
     def sniff(self, *args, **kargs):
+        from scapy import sendrecv
         return sendrecv.sniff(opened_socket=self, *args, **kargs)
 
 class L3RawSocket(SuperSocket):
@@ -92,7 +96,7 @@ class L3RawSocket(SuperSocket):
             pkt = pkt.payload
             
         if pkt is not None:
-            from arch import get_last_packet_timestamp
+            from scapy.arch import get_last_packet_timestamp
             pkt.time = get_last_packet_timestamp(self.ins)
         return pkt
     def send(self, x):
@@ -127,6 +131,7 @@ class StreamSocket(SimpleSocket):
         pad = pkt.getlayer(conf.padding_layer)
         if pad is not None and pad.underlayer is not None:
             del(pad.underlayer.payload)
+        from scapy.packet import NoPayload
         while pad is not None and not isinstance(pad, NoPayload):
             x -= len(pad.load)
             pad = pad.payload
@@ -137,6 +142,3 @@ class StreamSocket(SimpleSocket):
 
 if conf.L3socket is None:
     conf.L3socket = L3RawSocket
-
-import arch
-import sendrecv
diff --git a/scapy/themes.py b/scapy/themes.py
index 188fd5470b75f6b98b86f7ad0a070219139d7f4b..a0529d7006b51c8e0640833295b4fc771bc2346b 100644
--- a/scapy/themes.py
+++ b/scapy/themes.py
@@ -264,6 +264,7 @@ class ColorPrompt:
     __prompt = ">>> "
     def __str__(self):
         try:
+            from scapy import config
             ct = config.conf.color_theme
             if isinstance(ct, AnsiColorTheme):
                 ## ^A and ^B delimit invisible caracters for readline to count right
@@ -272,6 +273,3 @@ class ColorPrompt:
                 return ct.prompt(config.conf.prompt)
         except:
             return self.__prompt
-
-
-import config
diff --git a/scapy/tools/UTscapy.py b/scapy/tools/UTscapy.py
index 7753e1a1dec2bdbd452a8c5a01b79204fed89106..c6401468aac4be76e3f9e71491a25dea55a846e4 100755
--- a/scapy/tools/UTscapy.py
+++ b/scapy/tools/UTscapy.py
@@ -38,7 +38,7 @@ class File:
     def get_local(self):
         return bz2.decompress(base64.decodestring(self.local))
     def get_URL(self):
-        return URL
+        return self.URL
     def write(self, dir):
         if dir:
             dir += "/"
diff --git a/scapy/utils.py b/scapy/utils.py
index 211185610594104ca118add41be1187a46a0013f..c8daa522ceda44e655d904b5fe5b49ed3ebe8ea0 100644
--- a/scapy/utils.py
+++ b/scapy/utils.py
@@ -17,10 +17,10 @@ import subprocess
 import warnings
 warnings.filterwarnings("ignore","tempnam",RuntimeWarning, __name__)
 
-from config import conf
-from data import MTU
-from error import log_runtime,log_loading,log_interactive, Scapy_Exception
-from base_classes import BasePacketList
+from scapy.config import conf
+from scapy.data import MTU
+from scapy.error import log_runtime,log_loading,log_interactive, Scapy_Exception
+from scapy.base_classes import BasePacketList
 
 WINDOWS=sys.platform.startswith("win32")
 
@@ -215,9 +215,6 @@ def hexdiff(x,y):
             else:
                 i += 16
 
-    
-crc32 = zlib.crc32
-
 if struct.pack("H",1) == "\x00\x01": # big endian
     def checksum(pkt):
         if len(pkt) % 2 == 1:
@@ -592,7 +589,7 @@ class PcapReader_metaclass(type):
                     i.__init__(filename, fdesc, magic)
                 except Scapy_Exception:
                     try:
-                        self.f.seek(-4, 1)
+                        i.f.seek(-4, 1)
                     except:
                         pass
                     raise Scapy_Exception("Not a supported capture file")
@@ -730,7 +727,7 @@ class PcapReader(RawPcapReader):
         return p
     def read_all(self,count=-1):
         res = RawPcapReader.read_all(self, count)
-        import plist
+        from scapy import plist
         return plist.PacketList(res,name = os.path.basename(self.filename))
     def recv(self, size=MTU):
         return self.read_packet(size=size)
@@ -829,7 +826,7 @@ class PcapNgReader(RawPcapNgReader):
         return p
     def read_all(self,count=-1):
         res = RawPcapNgReader.read_all(self, count)
-        import plist
+        from scapy import plist
         return plist.PacketList(res, name=os.path.basename(self.filename))
     def recv(self, size=MTU):
         return self.read_packet()
diff --git a/scapy/utils6.py b/scapy/utils6.py
index 6a2ae83da17f61b303e31ace1a09c7f6248d40ba..eb4ecb5aa07472fa6b267d2f5c18b6b2a1af26b5 100644
--- a/scapy/utils6.py
+++ b/scapy/utils6.py
@@ -9,10 +9,14 @@
 """
 Utility functions for IPv6.
 """
-
-from config import conf
-from data import *
-from utils import *
+import random
+import socket
+import struct
+
+from scapy.config import conf
+from scapy.data import *
+from scapy.utils import *
+from scapy.pton_ntop import *
 
 
 def construct_source_candidate_set(addr, plen, laddr, loname):
diff --git a/scapy/volatile.py b/scapy/volatile.py
index a870b23c656fddd3ff87824cde832839100fcfe1..f59e9ecfef5d4ffaf901f690cb1427772dbfbab7 100644
--- a/scapy/volatile.py
+++ b/scapy/volatile.py
@@ -8,8 +8,8 @@ Fields that hold random numbers.
 """
 
 import random,time,math
-from base_classes import Net
-from utils import corrupt_bits,corrupt_bytes
+from scapy.base_classes import Net
+from scapy.utils import corrupt_bits,corrupt_bytes
 
 ####################
 ## Random numbers ##
diff --git a/test/ipsec.uts b/test/ipsec.uts
index 01f13571417ecfc6aef0a2bcd0d306ca4a2de6d2..bf13075ae9b39b4517b3bba7aeada2d29b27491e 100644
--- a/test/ipsec.uts
+++ b/test/ipsec.uts
@@ -8,6 +8,8 @@
 #######################################
 = IPv4 / ESP - Transport - AES-CBC - NULL
 
+import socket
+
 p = IP(src='1.1.1.1', dst='2.2.2.2')
 p /= TCP(sport=45012, dport=80)
 p /= Raw('testdata')
diff --git a/test/regression.uts b/test/regression.uts
index 849fb80ccd68e49e0402756b4ce3fe6f44eed18c..ff454d7164d24749b41f034dfd2f6f1a6087845b 100644
--- a/test/regression.uts
+++ b/test/regression.uts
@@ -46,7 +46,7 @@ routes6 = read_routes6()
 
 if len(routes6):
     iflist = get_if_list()
-    if iflist == [scapy.arch.LOOPBACK_NAME]:
+    if iflist == [LOOPBACK_NAME]:
 	len(routes6) == 1
     elif len(iflist) >= 2:
 	len(routes6) >= 3
@@ -358,10 +358,12 @@ a = TestFLF()
 a.lst = [7,65539]
 ls(a)
 str(a)
+import struct
 _ == struct.pack("!BII", 2,7,65539)
 
 = Disassemble
 ~ field
+import struct
 TestFLF("\x00\x11\x12")
 assert(_.len == 0 and Raw in _ and _[Raw].load == "\x11\x12")
 TestFLF(struct.pack("!BIII",3,1234,2345,12345678))
@@ -900,6 +902,8 @@ assert( _ == "Saturn" )
 
 = Automaton test io event from external fd
 ~ automaton
+import os
+
 class ATMT8(Automaton):
     @ATMT.state(initial=1)
     def BEGIN(self):
@@ -1257,6 +1261,8 @@ in6_addrtomac("FE80::" + in6_mactoifaceid("FF:00:00:00:00:00", ulbit=0)) == 'ff:
 
 ########### RFC 3041 related function ###############################
 = Test in6_getRandomizedIfaceId
+import socket
+
 res=True
 for _ in xrange(10):
     s1,s2 = in6_getRandomizedIfaceId('20b:93ff:feeb:2d3')