diff --git a/mergers/list/base.py b/mergers/list/base.py
index a7bbc17..ea73cdd 100644
--- a/mergers/list/base.py
+++ b/mergers/list/base.py
@@ -12,5 +12,7 @@
 
     def merge(self, first, second):
         first = [first] if not isinstance(first, list) else first[:]
+        if second is None:
+            return first
         second = [second] if not isinstance(second, list) else second[:]
         return self._combine(first, second)
diff --git a/mergers/list/extend.py b/mergers/list/extend.py
index f4acc35..5c44ac5 100644
--- a/mergers/list/extend.py
+++ b/mergers/list/extend.py
@@ -11,8 +11,9 @@
 class ListExtend(BaseListMerger):
 
     def _combine(self, first, second):
-        if isinstance(second, list):
-            first.extend(second)
-        else:
-            first.append(second)
+        if second is not None:
+            if isinstance(second, list):
+                first.extend(second)
+            else:
+                first.append(second)
         return first
diff --git a/mergers/list/set.py b/mergers/list/set.py
index ddb0eb4..54770a3 100644
--- a/mergers/list/set.py
+++ b/mergers/list/set.py
@@ -11,7 +11,8 @@
 class SetExtend(BaseListMerger):
 
     def _combine(self, first, second):
-        for i in second:
-            if i not in first:
-                first.append(i)
+        if second is not None:
+            for i in second:
+                if i not in first:
+                    first.append(i)
         return first
diff --git a/mergers/list/tests/test_extend.py b/mergers/list/tests/test_extend.py
index bdc40ca..7484e8e 100644
--- a/mergers/list/tests/test_extend.py
+++ b/mergers/list/tests/test_extend.py
@@ -64,3 +64,8 @@
         l2 = [3,2,1]
         target = l1 + l2
         assert self._test_merge(l1, l2, target)
+
+    def test_merge_with_none(self):
+        first = [1,2,3]
+        ret = self.merger.merge(first, None)
+        assert ret == first
diff --git a/mergers/list/tests/test_set.py b/mergers/list/tests/test_set.py
index d3e8183..fa0e118 100644
--- a/mergers/list/tests/test_set.py
+++ b/mergers/list/tests/test_set.py
@@ -25,3 +25,8 @@
         l2 = [3,2,1]
         target = l1
         assert self._test_merge(l1, l2, target)
+
+    def test_merge_with_none(self):
+        first = [1,2,3]
+        ret = self.merger.merge(first, None)
+        assert ret == first
