diff --git a/effin.cabal b/effin.cabal
--- a/effin.cabal
+++ b/effin.cabal
@@ -1,5 +1,5 @@
 name:                effin
-version:             0.2.1.1
+version:             0.2.1.2
 synopsis:            A Typeable-free implementation of extensible effects
 homepage:            https://github.com/YellPika/effin
 license:             BSD3
diff --git a/src/Data/Index.hs b/src/Data/Index.hs
--- a/src/Data/Index.hs
+++ b/src/Data/Index.hs
@@ -94,6 +94,6 @@
 split :: forall e l m. KnownLength l => Index (l :++ m) e -> Either (Index l e) (Index m e)
 split (Index i)
     | i < n = Left (Index i)
-    | otherwise = Right (Index (i - 1))
+    | otherwise = Right (Index (i - n))
   where
     n = size (Proxy :: Proxy l)
diff --git a/src/Data/Union.hs b/src/Data/Union.hs
--- a/src/Data/Union.hs
+++ b/src/Data/Union.hs
@@ -58,9 +58,9 @@
 push (Union i x) = Union (Index.push i) x
 
 pop :: Union (f :+ l) a -> Either (f a) (Union l a)
-pop u@(Union i x) =
-    case project u of
-        Just r -> Left r
+pop (Union i x) =
+    case testEquality i Index.zero of
+        Just Refl -> Left x
         Nothing -> Right (Union (Index.pop i) x)
 
 enable :: Union (f :- l) a -> Union l a
