diff --git a/mergers/dict/recursive_policy_update.py b/mergers/dict/recursive_policy_update.py
index f3bcb3e..01dfccb 100644
--- a/mergers/dict/recursive_policy_update.py
+++ b/mergers/dict/recursive_policy_update.py
@@ -21,6 +21,9 @@
         self._policy = policy
 
     def merge(self, first, second):
+        if second is None:
+            return first
+
         ret = first.copy()
         for k,v in second.iteritems():
             if k in ret:
diff --git a/mergers/dict/recursive_update.py b/mergers/dict/recursive_update.py
index ba94c1f..fc1d425 100644
--- a/mergers/dict/recursive_update.py
+++ b/mergers/dict/recursive_update.py
@@ -11,6 +11,9 @@
 class DictRecursiveUpdate(BaseDictMerger):
 
     def merge(self, first, second):
+        if second is None:
+            return first
+
         ret = first.copy()
         for k,v in second.iteritems():
             if k in ret:
diff --git a/mergers/dict/tests/test_recursive_policy_update.py b/mergers/dict/tests/test_recursive_policy_update.py
index f44ada6..4b9486b 100644
--- a/mergers/dict/tests/test_recursive_policy_update.py
+++ b/mergers/dict/tests/test_recursive_policy_update.py
@@ -24,3 +24,8 @@
         assert ret['one'][2] == 3
         assert len(ret['two']['one']) == 4
         assert ret['two']['one'][3] == 4
+
+    def test_merge_with_none(self):
+        first = {1:2,3:4}
+        ret = self.merger.merge(first, None)
+        assert ret == first
diff --git a/mergers/dict/tests/test_recursive_update.py b/mergers/dict/tests/test_recursive_update.py
index c1e8501..4410b68 100644
--- a/mergers/dict/tests/test_recursive_update.py
+++ b/mergers/dict/tests/test_recursive_update.py
@@ -43,3 +43,8 @@
             assert len(ret['four'][i]) == 1
             for k,v in ret['four'][i].iteritems():
                 assert k == v
+
+    def test_merge_with_none(self):
+        first = {1:2,3:4}
+        ret = self.merger.merge(first, None)
+        assert ret == first
diff --git a/mergers/dict/tests/test_update.py b/mergers/dict/tests/test_update.py
index 8e35c53..02702f7 100644
--- a/mergers/dict/tests/test_update.py
+++ b/mergers/dict/tests/test_update.py
@@ -20,3 +20,8 @@
         assert len(ret) == 4
         for k,v in ret.iteritems():
             assert k == v
+
+    def test_merge_with_none(self):
+        first = {1:2,3:4}
+        ret = self.merger.merge(first, None)
+        assert ret == first
diff --git a/mergers/dict/update.py b/mergers/dict/update.py
index dd834f0..69e849d 100644
--- a/mergers/dict/update.py
+++ b/mergers/dict/update.py
@@ -11,6 +11,9 @@
 class DictUpdate(BaseDictMerger):
 
     def merge(self, first, second):
+        if second is None:
+            return first
+
         ret = first.copy()
         ret.update(second)
         return ret
