diff --git a/scapy/all.py b/scapy/all.py
index f9268d015003c6840dc349f293d415d7f5d64a13..3119a189ac3d78600795a8a8ef45e9ec6421e90d 100644
--- a/scapy/all.py
+++ b/scapy/all.py
@@ -18,6 +18,7 @@ from route import *
 from sendrecv import *
 from supersocket import *
 from volatile import *
+from as_resolvers import *
 
 from ansmachine import *
 from automaton import *
diff --git a/scapy/as_resolvers.py b/scapy/as_resolvers.py
new file mode 100644
index 0000000000000000000000000000000000000000..05392c8d61e20ad5deca0325921b11e36a5f627e
--- /dev/null
+++ b/scapy/as_resolvers.py
@@ -0,0 +1,103 @@
+from config import conf
+
+class AS_resolver:
+    server = None
+    options = "-k" 
+    def __init__(self, server=None, port=43, options=None):
+        if server is not None:
+            self.server = server
+        self.port = port
+        if options is not None:
+            self.options = options
+        
+    def _start(self):
+        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        self.s.connect((self.server,self.port))
+        if self.options:
+            self.s.send(self.options+"\n")
+            self.s.recv(8192)
+    def _stop(self):
+        self.s.close()
+        
+    def _parse_whois(self, txt):
+        asn,desc = None,""
+        for l in txt.splitlines():
+            if not asn and l.startswith("origin:"):
+                asn = l[7:].strip()
+            if l.startswith("descr:"):
+                if desc:
+                    desc += r"\n"
+                desc += l[6:].strip()
+            if asn is not None and desc:
+                break
+        return asn,desc.strip()
+
+    def _resolve_one(self, ip):
+        self.s.send("%s\n" % ip)
+        x = ""
+        while not ("%" in x  or "source" in x):
+            x += self.s.recv(8192)
+        asn, desc = self._parse_whois(x)
+        return ip,asn,desc
+    def resolve(self, *ips):
+        self._start()
+        ret = []
+        for ip in ips:
+            ip,asn,desc = self._resolve_one(ip)
+            if asn is not None:
+                ret.append((ip,asn,desc))
+        self._stop()
+        return ret
+
+class AS_resolver_riswhois(AS_resolver):
+    server = "riswhois.ripe.net"
+    options = "-k -M -1"
+
+
+class AS_resolver_radb(AS_resolver):
+    server = "whois.ra.net"
+    options = "-k -M"
+    
+
+class AS_resolver_cymru(AS_resolver):
+    server = "whois.cymru.com"
+    options = None
+    def resolve(self, *ips):
+        ASNlist = []
+        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        s.connect((self.server,self.port))
+        s.send("begin\r\n"+"\r\n".join(ips)+"\r\nend\r\n")
+        r = ""
+        while 1:
+            l = s.recv(8192)
+            if l == "":
+                break
+            r += l
+        s.close()
+        for l in r.splitlines()[1:]:
+            if "|" not in l:
+                continue
+            asn,ip,desc = map(str.strip, l.split("|"))
+            if asn == "NA":
+                continue
+            asn = int(asn)
+            ASNlist.append((ip,asn,desc))
+        return ASNlist
+
+class AS_resolver_multi(AS_resolver):
+    resolvers_list = ( AS_resolver_cymru(),AS_resolver_riswhois(),AS_resolver_radb() )
+    def __init__(self, *reslist):
+        if reslist:
+            self.resolvers_list = reslist
+    def resolve(self, *ips):
+        todo = ips
+        ret = []
+        for ASres in self.resolvers_list:
+            res = ASres.resolve(*todo)
+            resolved = [ ip for ip,asn,desc in res ]
+            todo = [ ip for ip in todo if ip not in resolved ]
+            ret += res
+        return ret
+
+
+conf.AS_resolver = AS_resolver_multi()
diff --git a/scapy/plist.py b/scapy/plist.py
index 4298cb8c4cd8f71a326f376f86bc770782f93c8f..feda560ceca1615a193b65fe11606ea319e53d24 100644
--- a/scapy/plist.py
+++ b/scapy/plist.py
@@ -469,105 +469,6 @@ class ARPingResult(SndRcvList):
             print r.sprintf("%Ether.src% %ARP.psrc%")
 
 
-class AS_resolver:
-    server = None
-    options = "-k" 
-    def __init__(self, server=None, port=43, options=None):
-        if server is not None:
-            self.server = server
-        self.port = port
-        if options is not None:
-            self.options = options
-        
-    def _start(self):
-        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.s.connect((self.server,self.port))
-        if self.options:
-            self.s.send(self.options+"\n")
-            self.s.recv(8192)
-    def _stop(self):
-        self.s.close()
-        
-    def _parse_whois(self, txt):
-        asn,desc = None,""
-        for l in txt.splitlines():
-            if not asn and l.startswith("origin:"):
-                asn = l[7:].strip()
-            if l.startswith("descr:"):
-                if desc:
-                    desc += r"\n"
-                desc += l[6:].strip()
-            if asn is not None and desc:
-                break
-        return asn,desc.strip()
-
-    def _resolve_one(self, ip):
-        self.s.send("%s\n" % ip)
-        x = ""
-        while not ("%" in x  or "source" in x):
-            x += self.s.recv(8192)
-        asn, desc = self._parse_whois(x)
-        return ip,asn,desc
-    def resolve(self, *ips):
-        self._start()
-        ret = []
-        for ip in ips:
-            ip,asn,desc = self._resolve_one(ip)
-            if asn is not None:
-                ret.append((ip,asn,desc))
-        self._stop()
-        return ret
-
-class AS_resolver_riswhois(AS_resolver):
-    server = "riswhois.ripe.net"
-    options = "-k -M -1"
-
-
-class AS_resolver_radb(AS_resolver):
-    server = "whois.ra.net"
-    options = "-k -M"
-    
-
-class AS_resolver_cymru(AS_resolver):
-    server = "whois.cymru.com"
-    options = None
-    def resolve(self, *ips):
-        ASNlist = []
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        s.connect((self.server,self.port))
-        s.send("begin\r\n"+"\r\n".join(ips)+"\r\nend\r\n")
-        r = ""
-        while 1:
-            l = s.recv(8192)
-            if l == "":
-                break
-            r += l
-        s.close()
-        for l in r.splitlines()[1:]:
-            if "|" not in l:
-                continue
-            asn,ip,desc = map(str.strip, l.split("|"))
-            if asn == "NA":
-                continue
-            asn = int(asn)
-            ASNlist.append((ip,asn,desc))
-        return ASNlist
-
-class AS_resolver_multi(AS_resolver):
-    resolvers_list = ( AS_resolver_cymru(),AS_resolver_riswhois(),AS_resolver_radb() )
-    def __init__(self, *reslist):
-        if reslist:
-            self.resolvers_list = reslist
-    def resolve(self, *ips):
-        todo = ips
-        ret = []
-        for ASres in self.resolvers_list:
-            res = ASres.resolve(*todo)
-            resolved = [ ip for ip,asn,desc in res ]
-            todo = [ ip for ip in todo if ip not in resolved ]
-            ret += res
-        return ret
-    
     
 
 class TracerouteResult(SndRcvList):
@@ -927,5 +828,4 @@ class TracerouteResult(SndRcvList):
         return do_graph(self.graphdef, **kargs)
 
 
-conf.AS_resolver = AS_resolver_multi()