diff --git a/collections.go b/collections.go
index 1383f24..69c1824 100644
--- a/collections.go
+++ b/collections.go
@@ -20,7 +20,7 @@
 
 	// NextPageURL generates the URL for the page of data that follows this collection.
 	// Return "" if no such page exists.
-	NextPageURL() string
+	NextPageURL() (string, error)
 }
 
 // Pager knows how to advance through a specific resource collection, one page at a time.
@@ -53,18 +53,16 @@
 			return nil
 		}
 
-		currentURL = currentPage.NextPageURL()
+		currentURL, err = currentPage.NextPageURL()
+		if err != nil {
+			return err
+		}
 		if currentURL == "" {
 			return nil
 		}
 	}
 }
 
-// AllPages accumulates every page reachable from a Pager into a single Page, for convenience.
-func (p Pager) AllPages() (Page, error) {
-	return nil, errors.New("Wat")
-}
-
 // ConcretePage stores generic information derived from an HTTP response.
 type ConcretePage struct {
 	http.Header
@@ -92,8 +90,8 @@
 type SinglePage ConcretePage
 
 // NextPageURL always returns "" to indicate that there are no more pages to return.
-func (current SinglePage) NextPageURL() string {
-	return ""
+func (current SinglePage) NextPageURL() (string, error) {
+	return "", nil
 }
 
 // NewSinglePager constructs a Pager that "iterates" over a single Page.
@@ -137,15 +135,14 @@
 	var r response
 	err := mapstructure.Decode(current.Body, &r)
 	if err != nil {
-		// FIXME NextPageURL should be able to fail
-		panic(err)
+		return "", err
 	}
 
 	if r.Links.Next == nil {
-		return ""
+		return "", nil
 	}
 
-	return *r.Links.Next
+	return *r.Links.Next, nil
 }
 
 // NewLinkedPager creates a Pager that uses a "links" element in the JSON response to locate the next page.
