--- a/IPy.py
+++ b/IPy.py
@@ -9,7 +9,7 @@ https://github.com/haypo/python-ipy
 __version__ = '1.00'
 
 import bisect
-import collections
+import collections.abc
 import sys
 import types
 
@@ -1022,10 +1022,10 @@ class IP(IPint):
         raise ValueError("%s cannot be converted to an IPv4 address."
                          % repr(self))
 
-class IPSet(collections.MutableSet):
+class IPSet(collections.abc.MutableSet):
     def __init__(self, iterable=[]):
         # Make sure it's iterable, otherwise wrap
-        if not isinstance(iterable, collections.Iterable):
+        if not isinstance(iterable, collections.abc.Iterable):
             raise TypeError("'%s' object is not iterable" % type(iterable).__name__)
         
         # Make sure we only accept IP objects
@@ -1099,7 +1099,7 @@ class IPSet(collections.MutableSet):
 
     def add(self, value):
         # Make sure it's iterable, otherwise wrap
-        if not isinstance(value, collections.Iterable):
+        if not isinstance(value, collections.abc.Iterable):
             value = [value]
         
         # Check type
@@ -1113,7 +1113,7 @@ class IPSet(collections.MutableSet):
     
     def discard(self, value):
         # Make sure it's iterable, otherwise wrap
-        if not isinstance(value, collections.Iterable):
+        if not isinstance(value, collections.abc.Iterable):
             value = [value]
             
         # This is much faster than iterating over the addresses
--- a/test/test_IPy.py
+++ b/test/test_IPy.py
@@ -788,7 +788,7 @@ def timeout(func, args=(), kwargs={}, ti
     it.setDaemon(True)
     it.start()
     it.join(timeout_duration)
-    if it.isAlive():
+    if it.is_alive():
         return default
     else:
         return it.result
