diff --git a/scapy/fields.py b/scapy/fields.py
index 339796ef7e7a21d2bc3e68337147e841b06822f7..2b2896686470e743d0076789a3d350e5141dd918 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -180,80 +180,6 @@ class MACField(Field):
     def randval(self):
         return RandMAC()
 
-class DestMACField(MACField):
-    def __init__(self, name):
-        MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            dstip = None
-            if isinstance(pkt.payload, IPv6):
-                dstip = pkt.payload.dst            
-            elif isinstance(pkt.payload, IP):
-                dstip = pkt.payload.dst
-            elif isinstance(pkt.payload, ARP):
-                dstip = pkt.payload.pdst
-            if isinstance(dstip, Gen):
-                dstip = dstip.__iter__().next()
-            if dstip is not None:
-                if isinstance(pkt.payload, IPv6):
-                    x = getmacbyip6(dstip, chainCC=1)
-                else:    
-                    x = getmacbyip(dstip, chainCC=1)
-            if x is None:
-                x = "ff:ff:ff:ff:ff:ff"
-                warning("Mac address to reach %s not found\n"%dstip)
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
-        
-class SourceMACField(MACField):
-    def __init__(self, name):
-        MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            dstip = None
-            if isinstance(pkt.payload, IPv6):
-                dstip = pkt.payload.dst
-            elif isinstance(pkt.payload, IP):
-                dstip = pkt.payload.dst
-            elif isinstance(pkt.payload, ARP):
-                dstip = pkt.payload.pdst
-            if isinstance(dstip, Gen):
-                dstip = dstip.__iter__().next()
-            if dstip is not None:
-                if isinstance(pkt.payload, IPv6):
-                    iff,a,nh = conf.route6.route(dstip)
-                else:
-                    iff,a,gw = conf.route.route(dstip)
-                try:
-                    x = get_if_hwaddr(iff)
-                except:
-                    pass
-                if x is None:
-                    x = "00:00:00:00:00:00"
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
-        
-class ARPSourceMACField(MACField):
-    def __init__(self, name):
-        MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            dstip = pkt.pdst
-            if isinstance(dstip, Gen):
-                dstip = dstip.__iter__().next()
-            if dstip is not None:
-                iff,a,gw = conf.route.route(dstip)
-                try:
-                    x = get_if_hwaddr(iff)
-                except:
-                    pass
-                if x is None:
-                    x = "00:00:00:00:00:00"
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
 
 class Dot11AddrMACField(MACField):
     def is_applicable(self, pkt):
diff --git a/scapy/layers/l2.py b/scapy/layers/l2.py
index d112c17782f3551034561981cdcc6ba3a93d7fdb..6fd8ab212d39d4da66ced7563c160b69e1321abb 100644
--- a/scapy/layers/l2.py
+++ b/scapy/layers/l2.py
@@ -6,6 +6,87 @@ from scapy.plist import SndRcvList
 from scapy.fields import *
 from scapy.sendrecv import srp,srp1
 
+### Fields
+
+class DestMACField(MACField):
+    def __init__(self, name):
+        MACField.__init__(self, name, None)
+    def i2h(self, pkt, x):
+        if x is None:
+            dstip = None
+            if isinstance(pkt.payload, IPv6):
+                dstip = pkt.payload.dst            
+            elif isinstance(pkt.payload, IP):
+                dstip = pkt.payload.dst
+            elif isinstance(pkt.payload, ARP):
+                dstip = pkt.payload.pdst
+            if isinstance(dstip, Gen):
+                dstip = dstip.__iter__().next()
+            if dstip is not None:
+                if isinstance(pkt.payload, IPv6):
+                    x = getmacbyip6(dstip, chainCC=1)
+                else:    
+                    x = getmacbyip(dstip, chainCC=1)
+            if x is None:
+                x = "ff:ff:ff:ff:ff:ff"
+                warning("Mac address to reach %s not found\n"%dstip)
+        return MACField.i2h(self, pkt, x)
+    def i2m(self, pkt, x):
+        return MACField.i2m(self, pkt, self.i2h(pkt, x))
+        
+class SourceMACField(MACField):
+    def __init__(self, name):
+        MACField.__init__(self, name, None)
+    def i2h(self, pkt, x):
+        if x is None:
+            dstip = None
+            if isinstance(pkt.payload, IPv6):
+                dstip = pkt.payload.dst
+            elif isinstance(pkt.payload, IP):
+                dstip = pkt.payload.dst
+            elif isinstance(pkt.payload, ARP):
+                dstip = pkt.payload.pdst
+            if isinstance(dstip, Gen):
+                dstip = dstip.__iter__().next()
+            if dstip is not None:
+                if isinstance(pkt.payload, IPv6):
+                    iff,a,nh = conf.route6.route(dstip)
+                else:
+                    iff,a,gw = conf.route.route(dstip)
+                try:
+                    x = get_if_hwaddr(iff)
+                except:
+                    pass
+                if x is None:
+                    x = "00:00:00:00:00:00"
+        return MACField.i2h(self, pkt, x)
+    def i2m(self, pkt, x):
+        return MACField.i2m(self, pkt, self.i2h(pkt, x))
+        
+class ARPSourceMACField(MACField):
+    def __init__(self, name):
+        MACField.__init__(self, name, None)
+    def i2h(self, pkt, x):
+        if x is None:
+            dstip = pkt.pdst
+            if isinstance(dstip, Gen):
+                dstip = dstip.__iter__().next()
+            if dstip is not None:
+                iff,a,gw = conf.route.route(dstip)
+                try:
+                    x = get_if_hwaddr(iff)
+                except:
+                    pass
+                if x is None:
+                    x = "00:00:00:00:00:00"
+        return MACField.i2h(self, pkt, x)
+    def i2m(self, pkt, x):
+        return MACField.i2m(self, pkt, self.i2h(pkt, x))
+
+
+
+### Layers
+
 class Ether_or_Dot3_metaclass(Packet_metaclass):
     def __call__(self, _pkt=None, *args, **kargs):
         cls = self
diff --git a/scapy/layers/netbios.py b/scapy/layers/netbios.py
index fdfa4215a9702e10e9f1a9d53d55e8f0a0f0351a..098c965f4f55e00782cbefac14b296a41af0b803 100644
--- a/scapy/layers/netbios.py
+++ b/scapy/layers/netbios.py
@@ -2,6 +2,7 @@ import struct
 from scapy.packet import *
 from scapy.fields import *
 from scapy.layers.inet import UDP,TCP
+from scapy.layers.l2 import SourceMACField
 
 class NetBIOS_DS(Packet):
     name = "NetBIOS datagram service"