diff --git a/xos/neutron_extension/1:2013.2.2-0ubuntu1~cloud0/nat.py b/xos/neutron_extension/1:2013.2.2-0ubuntu1~cloud0/nat.py
deleted file mode 100644
index 04e39f1..0000000
--- a/xos/neutron_extension/1:2013.2.2-0ubuntu1~cloud0/nat.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from neutron.api.v2 import attributes
-
-FORWARD_PORTS = 'nat:forward_ports'
-
-EXTENDED_ATTRIBUTES_2_0 = {
-    'ports': {
-        FORWARD_PORTS: {'allow_post': True, 'allow_put': True,
-                       'default': attributes.ATTR_NOT_SPECIFIED,
-                       'is_visible': True},
-    }
-}
-
-
-class Nat(object):
-    """Extension class supporting OpenCloud NAT networking
-
-    This class is used by Quantum's extension framework to make
-    metadata about the OpenCloud Port extension available to
-    clients. No new resources are defined by this extension. Instead,
-    the existing Port resource's request and response messages are
-    extended with attributes in the OpenCloud namespace.
-    """
-
-    @classmethod
-    def get_name(cls):
-        return "OpenCloud NAT Networking Extension"
-
-    @classmethod
-    def get_alias(cls):
-        return "nat"
-
-    @classmethod
-    def get_description(cls):
-        return "Add TCP/UDP port forwarding through NAT to Quantum Port objects"
-
-    @classmethod
-    def get_namespace(cls):
-        # return "http://docs.openstack.org/ext/provider/api/v1.0"
-        # Nothing there right now
-        return "http://www.vicci.org/ext/opencloud/nat/api/v0.1"
-
-    @classmethod
-    def get_updated(cls):
-        return "2013-09-12T10:00:00-00:00"
-
-    def get_extended_resources(self, version):
-        if version == "2.0":
-            return EXTENDED_ATTRIBUTES_2_0
-        else:
-            return {}
