diff --git a/data-effects-core.cabal b/data-effects-core.cabal
--- a/data-effects-core.cabal
+++ b/data-effects-core.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               data-effects-core
-version:            0.4.0.1
+version:            0.4.0.2
 
 -- A short (one-line) description of the package.
 synopsis: A basic framework for effect systems based on effects represented by GADTs.
@@ -37,7 +37,7 @@
 source-repository head
     type: git
     location: https://github.com/sayo-hs/data-effects
-    tag: v0.4.0
+    tag: v0.4.0.2
     subdir: data-effects-core
 
 library
diff --git a/src/Data/Effect.hs b/src/Data/Effect.hs
--- a/src/Data/Effect.hs
+++ b/src/Data/Effect.hs
@@ -281,18 +281,3 @@
 instance HFunctor (CC ref) where
     hfmap _ = coerce
     {-# INLINE hfmap #-}
-
--- * Shift Effect
-
-data Shift ans ref :: Effect where
-    SubShiftFork :: Shift ans ref f (Either (ref a) a)
-    Call :: ref a -> a -> Shift ans ref f ans
-    Abort :: ans -> Shift ans ref f a
-
-data ShiftLabel
-type instance LabelOf (Shift ans ref) = ShiftLabel
-type instance OrderOf (Shift ans ref) = 'FirstOrder
-instance FirstOrder (Shift ans ref)
-instance HFunctor (Shift ans ref) where
-    hfmap _ = coerce
-    {-# INLINE hfmap #-}
diff --git a/src/Data/Effect/OpenUnion.hs b/src/Data/Effect/OpenUnion.hs
--- a/src/Data/Effect/OpenUnion.hs
+++ b/src/Data/Effect/OpenUnion.hs
@@ -20,7 +20,7 @@
 import Data.Effect.HFunctor (HFunctor, hfmap)
 import Data.Effect.Tag (type (#))
 import Data.Kind (Constraint, Type)
-import GHC.TypeLits (ErrorMessage (ShowType, Text, (:$$:), (:<>:)), KnownNat, Symbol, TypeError, natVal, type (+), type (-))
+import GHC.TypeLits (ErrorMessage (ShowType, Text, (:$$:), (:<>:)), KnownNat, Natural, Symbol, TypeError, natVal, type (+), type (-))
 import Unsafe.Coerce (unsafeCoerce)
 
 data Union (es :: [Effect]) (f :: Type -> Type) (a :: Type) where
@@ -376,19 +376,26 @@
 
 type WeakenHOEs es = (WeakenHOEs_ es 0 (OrderOf (HeadOf es)), FOEs (RemoveHOEs es))
 
-class (orderOfHead ~ OrderOf (HeadOf es)) => WeakenHOEs_ es countF orderOfHead where
+class (orderOfHead ~ OrderOf (HeadOf es)) => WeakenHOEs_ es (countF :: Natural) orderOfHead where
     -- | Example for '[H,F,F,H,H,F,H,F]
     --
     -- +----+-------+--------+----------------------+
     -- | ix | order | countF | shifter accumulation |
     -- +====+=======+========+======================+
     -- |  0 |     H |      0 | 01234... -> 12345... |
+    -- +----+-------+--------+----------------------+
     -- |  1 |     F |      0 | 01234... -> 12345... |
+    -- +----+-------+--------+----------------------+
     -- |  2 |     F |      1 | 01234... -> 12345... |
+    -- +----+-------+--------+----------------------+
     -- |  3 |     H |      2 | 01234... -> 12456... |
+    -- +----+-------+--------+----------------------+
     -- |  4 |     H |      2 | 01234... -> 12567... |
+    -- +----+-------+--------+----------------------+
     -- |  5 |     F |      2 | 01234... -> 12567... |
+    -- +----+-------+--------+----------------------+
     -- |  6 |     H |      3 | 01234... -> 12578... |
+    -- +----+-------+--------+----------------------+
     -- |  7 |     F |      3 | 01234... -> 12578... |
     -- +----+-------+--------+----------------------+
     foldHoeIndexShifter :: (Int -> Int) -> (Int -> Int)
