diff --git a/dns/message.pyi b/dns/message.pyi
index ed99b3c..fb55a4c 100644
--- a/dns/message.pyi
+++ b/dns/message.pyi
@@ -37,6 +37,10 @@ class Message:
         self.multi = False
         self.first = True
         self.index : Dict[Tuple[rrset.RRset, name.Name, int, int, Union[int,str], int], rrset.RRset] = {}
+
+    def is_response(self, other : Message) -> bool:
+        ...
+
 def from_text(a : str) -> Message:
     ...
 
diff --git a/dns/resolver.py b/dns/resolver.py
index c49598f..735de9f 100644
--- a/dns/resolver.py
+++ b/dns/resolver.py
@@ -524,7 +524,7 @@ class Resolver(object):
         """
 
         self.domain = None
-        self.nameservers = None
+        self.nameservers = []
         self.nameserver_ports = None
         self.port = None
         self.search = None
@@ -1079,6 +1079,21 @@ class Resolver(object):
 
         self.flags = flags
 
+    @property
+    def nameservers(self):
+        return self._nameservers
+
+    @nameservers.setter
+    def nameservers(self, nameservers):
+        """
+        :param nameservers: must be a ``list``.
+        :raise ValueError: if `nameservers` is anything other than a ``list``.
+        """
+        if isinstance(nameservers, list):
+            self._nameservers = nameservers
+        else:
+            raise ValueError('nameservers must be a list'
+                             ' (not a {})'.format(type(nameservers)))
 
 #: The default resolver.
 default_resolver = None
diff --git a/dns/resolver.pyi b/dns/resolver.pyi
index 06742fe..c68d04a 100644
--- a/dns/resolver.pyi
+++ b/dns/resolver.pyi
@@ -33,7 +33,7 @@ def zone_for_name(name, rdclass : int = rdataclass.IN, tcp=False, resolver : Opt
     ...
 
 class Resolver:
-    def __init__(self, configure):
+    def __init__(self, filename : Optional[str] = '/etc/resolv.conf', configure : Optional[bool] = True):
         self.nameservers : List[str]
     def query(self, qname : str, rdtype : Union[int,str] = rdatatype.A, rdclass : Union[int,str] = rdataclass.IN,
               tcp : bool = False, source : Optional[str] = None, raise_on_no_answer=True, source_port : int = 0):

diff --git a/tests/test_resolver.py b/tests/test_resolver.py
index 1f78839..993a582 100644
--- a/tests/test_resolver.py
+++ b/tests/test_resolver.py
@@ -404,5 +404,23 @@ class NXDOMAINExceptionTestCase(unittest.TestCase):
         self.assertTrue(e2.canonical_name == dns.name.from_text(cname2))
 
 
+class ResolverNameserverValidTypeTestCase(unittest.TestCase):
+    def test_set_nameservers_to_list(self):
+        resolver = dns.resolver.Resolver()
+        resolver.nameservers = ['1.2.3.4']
+        self.assertEqual(resolver.nameservers, ['1.2.3.4'])
+
+    def test_set_namservers_to_empty_list(self):
+        resolver = dns.resolver.Resolver()
+        resolver.nameservers = []
+        self.assertEqual(resolver.nameservers, [])
+
+    def test_set_nameservers_invalid_type(self):
+        resolver = dns.resolver.Resolver()
+        invalid_nameservers = [None, '1.2.3.4', 1234, (1, 2, 3, 4), {'invalid': 'nameserver'}]
+        for invalid_nameserver in invalid_nameservers:
+            with self.assertRaises(ValueError):
+                resolver.nameservers = invalid_nameserver
+
 if __name__ == '__main__':
     unittest.main()

Error checking of nameservers
Feature request:  Please verify that the value being set for "nameservers" is an array.  It is too easy to say:
resolver.nameservers = '8.8.8.8'
and queries will time out with no clue as to why.  The code should not allow "nameservers" to be set to anything other than an array.  It should throw an exception.

tests/test_resolver.py::ResolverNameserverValidTypeTestCase::test_set_nameservers_invalid_type
tests/test_resolver.py::BaseResolverTests::testCacheCleaning tests/test_resolver.py::BaseResolverTests::testCacheExpiration tests/test_resolver.py::BaseResolverTests::testEmptyAnswerSection tests/test_resolver.py::BaseResolverTests::testIndexErrorOnEmptyRRsetAccess tests/test_resolver.py::BaseResolverTests::testIndexErrorOnEmptyRRsetDelete tests/test_resolver.py::BaseResolverTests::testLRUDoesLRU tests/test_resolver.py::BaseResolverTests::testLRUExpiration tests/test_resolver.py::BaseResolverTests::testLRUReplace tests/test_resolver.py::BaseResolverTests::testRead tests/test_resolver.py::BaseResolverTests::testZoneForName1 tests/test_resolver.py::BaseResolverTests::testZoneForName2 tests/test_resolver.py::BaseResolverTests::testZoneForName3 tests/test_resolver.py::BaseResolverTests::testZoneForName4 tests/test_resolver.py::SelectResolverTestCase::testCacheCleaning tests/test_resolver.py::SelectResolverTestCase::testCacheExpiration tests/test_resolver.py::SelectResolverTestCase::testEmptyAnswerSection tests/test_resolver.py::SelectResolverTestCase::testIndexErrorOnEmptyRRsetAccess tests/test_resolver.py::SelectResolverTestCase::testIndexErrorOnEmptyRRsetDelete tests/test_resolver.py::SelectResolverTestCase::testLRUDoesLRU tests/test_resolver.py::SelectResolverTestCase::testLRUExpiration tests/test_resolver.py::SelectResolverTestCase::testLRUReplace tests/test_resolver.py::SelectResolverTestCase::testRead tests/test_resolver.py::SelectResolverTestCase::testZoneForName1 tests/test_resolver.py::SelectResolverTestCase::testZoneForName2 tests/test_resolver.py::SelectResolverTestCase::testZoneForName3 tests/test_resolver.py::SelectResolverTestCase::testZoneForName4 tests/test_resolver.py::PollResolverTestCase::testCacheCleaning tests/test_resolver.py::PollResolverTestCase::testCacheExpiration tests/test_resolver.py::PollResolverTestCase::testEmptyAnswerSection tests/test_resolver.py::PollResolverTestCase::testIndexErrorOnEmptyRRsetAccess tests/test_resolver.py::PollResolverTestCase::testIndexErrorOnEmptyRRsetDelete tests/test_resolver.py::PollResolverTestCase::testLRUDoesLRU tests/test_resolver.py::PollResolverTestCase::testLRUExpiration tests/test_resolver.py::PollResolverTestCase::testLRUReplace tests/test_resolver.py::PollResolverTestCase::testRead tests/test_resolver.py::PollResolverTestCase::testZoneForName1 tests/test_resolver.py::PollResolverTestCase::testZoneForName2 tests/test_resolver.py::PollResolverTestCase::testZoneForName3 tests/test_resolver.py::PollResolverTestCase::testZoneForName4 tests/test_resolver.py::NXDOMAINExceptionTestCase::test_nxdomain_canonical_name tests/test_resolver.py::NXDOMAINExceptionTestCase::test_nxdomain_compatible tests/test_resolver.py::NXDOMAINExceptionTestCase::test_nxdomain_merge tests/test_resolver.py::ResolverNameserverValidTypeTestCase::test_set_nameservers_to_list tests/test_resolver.py::ResolverNameserverValidTypeTestCase::test_set_namservers_to_empty_list