diff --git a/README.rst b/README.rst
index 563d9f7..04f5977 100644
--- a/README.rst
+++ b/README.rst
@@ -32,6 +32,7 @@ Changes
 ----------------------
 
 * fix handling of invalid IP address/range values
+* implement a proper clear_doc method for the ip domain
 
 0.2.0 - 2016-05-04
 ------------------
diff --git a/jandd/sphinxext/ip.py b/jandd/sphinxext/ip.py
index 7582159..fe25208 100644
--- a/jandd/sphinxext/ip.py
+++ b/jandd/sphinxext/ip.py
@@ -191,7 +191,22 @@ class IPDomain(Domain):
     }
 
     def clear_doc(self, docname):
-        pass
+        to_remove = []
+        for key, value in self.data['v4range'].items():
+            if docname == value[0]:
+                to_remove.append(key)
+        for key in to_remove:
+            del self.data['v4range'][key]
+
+        to_remove = []
+        for key, value in self.data['v6range'].items():
+            if docname == value[0]:
+                to_remove.append(key)
+        for key in to_remove:
+            del self.data['v6range'][key]
+        self.data['ips'] = [
+            item for item in self.data['ips'] if item['docname'] != docname
+        ]
 
     def resolve_xref(self, env, fromdocname, builder, typ, target, node,
                      contnode):