diff --git a/blanks.cabal b/blanks.cabal
--- a/blanks.cabal
+++ b/blanks.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f04965a3798127c433ad644602e9f2d305aadbcc482644902f31342e2390729c
+-- hash: bce7c1157ad17dfb08bdd82fd1d9cef7f5aead112c1349019b6dbfed38de7959
 
 name:           blanks
-version:        0.4.1
+version:        0.4.2
 synopsis:       Fill-in-the-blanks - A library factoring out substitution from ASTs
 description:    Please see the README on GitHub at <https://github.com/ejconlon/blanks#readme>
 category:       Language
diff --git a/src/Blanks/LocScope.hs b/src/Blanks/LocScope.hs
--- a/src/Blanks/LocScope.hs
+++ b/src/Blanks/LocScope.hs
@@ -38,7 +38,7 @@
 instance NatNewtype (ScopeW (Located l) n f (LocScope l n f)) (LocScope l n f)
 
 instance (NFData l, NFData n, NFData a, NFData (f (LocScope l n f a))) => NFData (LocScope l n f a) where
-  rnf = rnf . unLocScope
+  rnf (LocScope s) = seq (rnf s) ()
 
 pattern LocScopeBound :: l -> Int -> LocScope l n f a
 pattern LocScopeBound l b = LocScope (ScopeW (Located l (UnderScopeBound b)))
diff --git a/src/Blanks/Scope.hs b/src/Blanks/Scope.hs
--- a/src/Blanks/Scope.hs
+++ b/src/Blanks/Scope.hs
@@ -33,7 +33,7 @@
 instance NatNewtype (ScopeW Identity n f (Scope n f)) (Scope n f)
 
 instance (NFData n, NFData a, NFData (f (Scope n f a))) => NFData (Scope n f a) where
-  rnf = rnf . unScope
+  rnf (Scope s) = seq (rnf s) ()
 
 pattern ScopeBound :: Int -> Scope n f a
 pattern ScopeBound b = Scope (ScopeW (Identity (UnderScopeBound b)))
diff --git a/src/Blanks/ScopeW.hs b/src/Blanks/ScopeW.hs
--- a/src/Blanks/ScopeW.hs
+++ b/src/Blanks/ScopeW.hs
@@ -42,7 +42,7 @@
   }
 
 instance NFData (t (UnderScope n f (g a) a) )=> NFData (ScopeW t n f g a) where
-  rnf = rnf . unScopeW
+  rnf (ScopeW tu) = seq (rnf tu) ()
 
 instance Eq (t (UnderScope n f (g a) a)) => Eq (ScopeW t n f g a) where
   ScopeW tu == ScopeW tv = tu == tv
