diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
 
+Version 5.8
+-----
+
+* Satisfying a new requirement of the MonadMask class type.
+
 Version 5.7
 -----
 
diff --git a/Simulation/Aivika/Internal/Dynamics.hs b/Simulation/Aivika/Internal/Dynamics.hs
--- a/Simulation/Aivika/Internal/Dynamics.hs
+++ b/Simulation/Aivika/Internal/Dynamics.hs
@@ -209,6 +209,18 @@
   invokeDynamics p (a $ q u)
   where q u (Dynamics b) = Dynamics (u . b)
 
+-- | An implementation of 'generalBracket'.
+generalBracketDynamics :: Dynamics a
+                          -> (a -> MC.ExitCase b -> Dynamics c)
+                          -> (a -> Dynamics b)
+                          -> Dynamics (b, c)
+generalBracketDynamics acquire release use =
+  Dynamics $ \p -> do
+    MC.generalBracket
+      (invokeDynamics p acquire)
+      (\resource e -> invokeDynamics p $ release resource e)
+      (\resource -> invokeDynamics p $ use resource)
+
 -- | Invoke the 'Dynamics' computation.
 invokeDynamics :: Point -> Dynamics a -> IO a
 {-# INLINE invokeDynamics #-}
@@ -228,6 +240,7 @@
 instance MC.MonadMask Dynamics where
   mask = maskDynamics
   uninterruptibleMask = uninterruptibleMaskDynamics
+  generalBracket = generalBracketDynamics
 
 -- | Computation that returns the current simulation time.
 time :: Dynamics Double
diff --git a/Simulation/Aivika/Internal/Event.hs b/Simulation/Aivika/Internal/Event.hs
--- a/Simulation/Aivika/Internal/Event.hs
+++ b/Simulation/Aivika/Internal/Event.hs
@@ -180,6 +180,18 @@
   invokeEvent p (a $ q u)
   where q u (Event b) = Event (u . b)
 
+-- | An implementation of 'generalBracket'.
+generalBracketEvent :: Event a
+                       -> (a -> MC.ExitCase b -> Event c)
+                       -> (a -> Event b)
+                       -> Event (b, c)
+generalBracketEvent acquire release use =
+  Event $ \p -> do
+    MC.generalBracket
+      (invokeEvent p acquire)
+      (\resource e -> invokeEvent p $ release resource e)
+      (\resource -> invokeEvent p $ use resource)
+
 -- | Invoke the 'Event' computation.
 invokeEvent :: Point -> Event a -> IO a
 {-# INLINE invokeEvent #-}
@@ -199,6 +211,7 @@
 instance MC.MonadMask Event where
   mask = maskEvent
   uninterruptibleMask = uninterruptibleMaskEvent
+  generalBracket = generalBracketEvent
 
 -- | Defines how the events are processed.
 data EventProcessing = CurrentEvents
diff --git a/Simulation/Aivika/Internal/Parameter.hs b/Simulation/Aivika/Internal/Parameter.hs
--- a/Simulation/Aivika/Internal/Parameter.hs
+++ b/Simulation/Aivika/Internal/Parameter.hs
@@ -220,6 +220,18 @@
   invokeParameter r (a $ q u)
   where q u (Parameter b) = Parameter (u . b)
 
+-- | An implementation of 'generalBracket'.
+generalBracketParameter :: Parameter a
+                           -> (a -> MC.ExitCase b -> Parameter c)
+                           -> (a -> Parameter b)
+                           -> Parameter (b, c)
+generalBracketParameter acquire release use =
+  Parameter $ \r -> do
+    MC.generalBracket
+      (invokeParameter r acquire)
+      (\resource e -> invokeParameter r $ release resource e)
+      (\resource -> invokeParameter r $ use resource)
+
 -- | Invoke the 'Parameter' computation.
 invokeParameter :: Run -> Parameter a -> IO a
 {-# INLINE invokeParameter #-}
@@ -239,6 +251,7 @@
 instance MC.MonadMask Parameter where
   mask = maskParameter
   uninterruptibleMask = uninterruptibleMaskParameter
+  generalBracket = generalBracketParameter
   
 -- | Memoize the 'Parameter' computation, always returning the same value
 -- within a simulation run. However, the value will be recalculated for other
diff --git a/Simulation/Aivika/Internal/Simulation.hs b/Simulation/Aivika/Internal/Simulation.hs
--- a/Simulation/Aivika/Internal/Simulation.hs
+++ b/Simulation/Aivika/Internal/Simulation.hs
@@ -180,6 +180,18 @@
   invokeSimulation r (a $ q u)
   where q u (Simulation b) = Simulation (u . b)
 
+-- | An implementation of 'generalBracket'.
+generalBracketSimulation :: Simulation a
+                            -> (a -> MC.ExitCase b -> Simulation c)
+                            -> (a -> Simulation b)
+                            -> Simulation (b, c)
+generalBracketSimulation acquire release use =
+  Simulation $ \r -> do
+    MC.generalBracket
+      (invokeSimulation r acquire)
+      (\resource e -> invokeSimulation r $ release resource e)
+      (\resource -> invokeSimulation r $ use resource)
+
 -- | Invoke the 'Simulation' computation.
 invokeSimulation :: Run -> Simulation a -> IO a
 {-# INLINE invokeSimulation #-}
@@ -199,6 +211,7 @@
 instance MC.MonadMask Simulation where
   mask = maskSimulation
   uninterruptibleMask = uninterruptibleMaskSimulation
+  generalBracket = generalBracketSimulation
 
 -- | Memoize the 'Simulation' computation, always returning the same value
 -- within a simulation run.
diff --git a/Simulation/Aivika/Vector/Unboxed.hs b/Simulation/Aivika/Vector/Unboxed.hs
--- a/Simulation/Aivika/Vector/Unboxed.hs
+++ b/Simulation/Aivika/Vector/Unboxed.hs
@@ -175,7 +175,7 @@
      forM_ [index, index + 1 .. count - 2] $ \i ->
        do x <- readArray array (i + 1)
           writeArray array i x
-     writeArray array (count - 1) undefined
+     -- writeArray array (count - 1) undefined
      writeIORef (vectorCountRef vector) (count - 1)
 
 -- | Delete the specified range of elements.
@@ -203,8 +203,8 @@
      forM_ [index, index + 1 .. (count - len) - 1] $ \i ->
        do x <- readArray array (i + len)
           writeArray array i x
-     forM_ [(count - len) .. count - 1] $ \i ->
-       writeArray array i undefined
+     -- forM_ [(count - len) .. count - 1] $ \i ->
+     --   writeArray array i undefined
      writeIORef (vectorCountRef vector) (count - len)
      
 -- | Return the index of the item or -1.     
diff --git a/aivika.cabal b/aivika.cabal
--- a/aivika.cabal
+++ b/aivika.cabal
@@ -1,5 +1,5 @@
 name:            aivika
-version:         5.7
+version:         5.8
 synopsis:        A multi-method simulation library
 description:
     Aivika is a discrete event simulation (DES) framework with support of activity-oriented,
@@ -240,7 +240,7 @@
                      deepseq >= 1.1.0.0,
                      binary >= 0.6.4.0,
                      semigroups >= 0.10,
-                     exceptions >= 0.6
+                     exceptions >= 0.9.0
 
     other-extensions:   FlexibleContexts,
                         FlexibleInstances,
