diff --git a/CHANGELOG.md b/CHANGELOG.md
index bab23fc..c09271e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
 # Version history
 
+- Fixed chainability of fetch methods in `corpusQuery`
+
 ## 0.9.0
 
 - Updates recommended RKorAPClient version to 0.9.0
diff --git a/KorAPClient/__init__.py b/KorAPClient/__init__.py
index 35c4c3a..82f0501 100644
--- a/KorAPClient/__init__.py
+++ b/KorAPClient/__init__.py
@@ -312,7 +312,8 @@
         with localconverter(fix_lists_in_dataframes):
             df = res.slots['collectedMatches']
         res.slots['collectedMatches'] = df
-        return res
+        super().__init__(res)
+        return self
 
     def fetchRest(self, *args, **kwargs):
         """Fetch remaining query results
@@ -326,7 +327,8 @@
         with localconverter(fix_lists_in_dataframes):
             df = res.slots['collectedMatches']
         res.slots['collectedMatches'] = df
-        return res
+        super().__init__(res)
+        return self
 
     def fetchAll(self, *args, **kwargs):
         """Fetch all query results
@@ -343,5 +345,6 @@
         with localconverter(fix_lists_in_dataframes):
             df = res.slots['collectedMatches']
         res.slots['collectedMatches'] = df
-        return res
+        super().__init__(res)
+        return self
 
diff --git a/KorAPClient/tests/test_korapclient.py b/KorAPClient/tests/test_korapclient.py
index d4673b3..c5a36a6 100644
--- a/KorAPClient/tests/test_korapclient.py
+++ b/KorAPClient/tests/test_korapclient.py
@@ -136,6 +136,29 @@
         self.assertGreater(min(df['KED.rcpnt'].str.len()), 5)
 
 
+#    def test_authorization(self):
+#        kcon = KorAPConnection(accessToken=NULL, verbose=True).auth()
+#        self.assertIsNotNone(kcon.slots['accessToken'])
+
+    def test_chained_fetch_matches(self):
+        q = (
+            self.kcon.corpusQuery("Test", metadataOnly=False)
+            .fetchNext(maxFetch=120)
+            .fetchNext()
+            .fetchNext()
+        )
+        self.assertIn('collectedMatches', q.slots)
+        self.assertEqual(len(q.slots['collectedMatches']), 220)
+        self.assertIsInstance(q.slots['collectedMatches']['tokens.match'].iloc[0], str)
+
+    def test_unchained_fetch_matches(self):
+        q =  self.kcon.corpusQuery("Test", metadataOnly=False)
+        q.fetchNext(maxFetch=120)
+        q.fetchNext()
+        q.fetchNext()
+        self.assertIn('collectedMatches', q.slots)
+        self.assertEqual(len(q.slots['collectedMatches']), 220)
+        self.assertIsInstance(q.slots['collectedMatches']['tokens.match'].iloc[0], str)
 
 if __name__ == '__main__':
     unittest.main()
