diff --git a/xos/core/models/.gitignore b/xos/core/models/.gitignore
index 2c710d6..75a6259 100644
--- a/xos/core/models/.gitignore
+++ b/xos/core/models/.gitignore
@@ -1,5 +1,6 @@
 *.py
 Makefile
+!attic/*.py
 !contenttype.py
 !header.py
 !network_header.py
diff --git a/xos/core/models/attic/address_top.py b/xos/core/models/attic/address_top.py
new file mode 100644
index 0000000..bf71b64
--- /dev/null
+++ b/xos/core/models/attic/address_top.py
@@ -0,0 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import socket
+import struct
diff --git a/xos/core/models/attic/addresspool_model.py b/xos/core/models/attic/addresspool_model.py
index d128f98..2aad18c 100644
--- a/xos/core/models/attic/addresspool_model.py
+++ b/xos/core/models/attic/addresspool_model.py
@@ -13,6 +13,37 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# imported in address_top.py
+# import socket
+# import struct
+
+def expand_cidr(self, cidr):
+    (network, bits) = cidr.split("/")
+    network = network.strip()
+    bits = int(bits.strip())
+
+    dest = []
+
+    netmask = (~(pow(2, 32 - bits) - 1) & 0xFFFFFFFF)
+
+    count = pow(2, 32 - bits)
+    for i in range(2, count - 1):
+        ip = struct.unpack("!L", socket.inet_aton(network))[0]
+        ip = ip & netmask | i
+        dest.append(socket.inet_ntoa(struct.pack("!L", ip)))
+
+    return (dest, bits)
+
+def __xos_save_base(self, *args, **kwds):
+    """
+    We need to convert subnets into lists of addresses before saving
+    """
+    if self.addresses and "/" in self.addresses:
+        original_addresses = self.addresses
+        (cidr_addrs, cidr_netbits) = self.expand_cidr(self.addresses)
+        self.addresses = " ".join(cidr_addrs)
+        if not self.cidr:
+            self.cidr = original_addresses
 
 def get_address(self):
     with transaction.atomic():
