diff --git a/quiver-interleave.cabal b/quiver-interleave.cabal
--- a/quiver-interleave.cabal
+++ b/quiver-interleave.cabal
@@ -1,5 +1,5 @@
 name:                quiver-interleave
-version:             0.2.0.0
+version:             0.2.0.1
 synopsis:            Interleave values from multiple Quivers
 description:         Combine multiple Quivers into one.
 license:             MIT
diff --git a/src/Control/Quiver/Interleave.hs b/src/Control/Quiver/Interleave.hs
--- a/src/Control/Quiver/Interleave.hs
+++ b/src/Control/Quiver/Interleave.hs
@@ -39,18 +39,18 @@
     (e:_) -> deliver e
     _     -> go aps
   where
-    go []  = spcomplete
-    go aps = do let (a,p):aps' = sortBy (cmp`on`fst) aps
-                emit_ a
-                eap' <- qlift $ spnext p
-                either (\e -> bool (go aps') (deliver e) (isErr e))
-                       (go . (:aps'))
-                       eap'
+    go []      = spcomplete
+    go [(a,p)] = a >:> p
+    go aps     = do let (a,p):aps' = sortBy (cmp`on`fst) aps
+                    emit_ a
+                    eap' <- qlift $ spnext p
+                    either (\e -> bool (go aps') (deliver e) (isErr e))
+                           (go . (:aps'))
+                           eap'
 
     isErr SPComplete = False
     isErr _          = True
 
--- TODO: consider having it just return a Maybe
 spnext :: (Monad f) => P a a' b () f r -> f (Either r (b, P a a' b () f r))
 spnext = go
   where
