diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.8.2]
+### Changed
+- (#55) Fixed a bug where components where not properly deleted from the cache following the cache bitmasking update
+
 ## [0.8.1]
 ### Changed
 - Changed `Cache`s to use bitmasks instead of the remainder operation. This makes caches up to three times faster.
diff --git a/apecs.cabal b/apecs.cabal
--- a/apecs.cabal
+++ b/apecs.cabal
@@ -1,5 +1,5 @@
 name:                apecs
-version:             0.8.1
+version:             0.8.2
 homepage:            https://github.com/jonascarpay/apecs#readme
 license:             BSD3
 license-file:        LICENSE
diff --git a/src/Apecs/Components.hs b/src/Apecs/Components.hs
--- a/src/Apecs/Components.hs
+++ b/src/Apecs/Components.hs
@@ -46,7 +46,7 @@
 
 T.makeInstances [2..8]
 
--- | Psuedocomponent indicating the absence of @a@.
+-- | Pseudocomponent indicating the absence of @a@.
 --   Mainly used as e.g. @cmap $ \(a, Not b) -> c@ to iterate over entities with an @a@ but no @b@.
 --   Can also be used to delete components, like @cmap $ \a -> (Not :: Not a)@ to delete every @a@ component.
 data Not a = Not
diff --git a/src/Apecs/Stores.hs b/src/Apecs/Stores.hs
--- a/src/Apecs/Stores.hs
+++ b/src/Apecs/Stores.hs
@@ -176,11 +176,10 @@
   explDestroy (Cache mask tags cache s) ety = do
     let index = ety .&. mask
     tag <- liftIO$ UM.unsafeRead tags (ety .&. mask)
-    if tag == ety
-       then do
-         liftIO$ UM.unsafeWrite tags  index (-2)
-         liftIO$ VM.unsafeWrite cache index cacheMiss
-       else explDestroy s ety
+    when (tag == ety) $ liftIO $ do
+      UM.unsafeWrite tags  index (-2)
+      VM.unsafeWrite cache index cacheMiss
+    explDestroy s ety
 
 instance (MonadIO m, ExplMembers m s) => ExplMembers m (Cache n s) where
   {-# INLINE explMembers #-}
