diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+
+Version 4.3.3
+-----
+
+* Added function vectorDeleteRange to remove the range of elements from the mutable vector.
+
+* Fixed the resource preemption when releasing and requesting again for the resource at
+  the same modeling time.
+
 Version 4.3.2
 -----
 
diff --git a/Simulation/Aivika/Internal/Cont.hs b/Simulation/Aivika/Internal/Cont.hs
--- a/Simulation/Aivika/Internal/Cont.hs
+++ b/Simulation/Aivika/Internal/Cont.hs
@@ -820,7 +820,7 @@
                        ContPreemptionEnding ->
                          invokeEvent p $
                          enqueueEvent (pointTime p) $
-                         resumeCont c a
+                         reenterCont c a
                        ContPreemptionBeginning ->
                          error "The computation was already preempted: sleepCont."
      writeIORef rh (Just h)
diff --git a/Simulation/Aivika/Resource/Preemption.hs b/Simulation/Aivika/Resource/Preemption.hs
--- a/Simulation/Aivika/Resource/Preemption.hs
+++ b/Simulation/Aivika/Resource/Preemption.hs
@@ -349,7 +349,7 @@
                           do PQ.enqueue (resourceActingQueue r) (- priority) $ ResourceActingItem priority pid
                              invokeEvent p $ updateResourceWaitTime r (pointTime p - t)
                              invokeEvent p $ updateResourceUtilisationCount r 1
-                             invokeEvent p $ enqueueEvent (pointTime p) $ resumeCont c ()
+                             invokeEvent p $ enqueueEvent (pointTime p) $ reenterCont c ()
                  Right (ResourcePreemptedItem priority t pid) ->
                    do f <- invokeEvent p $ processCancelled pid
                       case f of
diff --git a/Simulation/Aivika/Resource/Preemption/Base.hs b/Simulation/Aivika/Resource/Preemption/Base.hs
--- a/Simulation/Aivika/Resource/Preemption/Base.hs
+++ b/Simulation/Aivika/Resource/Preemption/Base.hs
@@ -223,7 +223,7 @@
                           invokeEvent p $ releaseResource' r
                         Just c ->
                           do PQ.enqueue (resourceActingQueue r) (- priority) $ ResourceActingItem priority pid
-                             invokeEvent p $ enqueueEvent (pointTime p) $ resumeCont c ()
+                             invokeEvent p $ enqueueEvent (pointTime p) $ reenterCont c ()
                  Right (ResourcePreemptedItem priority pid) ->
                    do f <- invokeEvent p $ processCancelled pid
                       case f of
diff --git a/Simulation/Aivika/Vector.hs b/Simulation/Aivika/Vector.hs
--- a/Simulation/Aivika/Vector.hs
+++ b/Simulation/Aivika/Vector.hs
@@ -22,6 +22,7 @@
         vectorBinarySearch,
         vectorInsert,
         vectorDeleteAt,
+        vectorDeleteRange,
         vectorDelete,
         vectorDeleteBy,
         vectorIndex,
@@ -174,6 +175,34 @@
           writeArray array i x
      writeArray array (count - 1) undefined
      writeIORef (vectorCountRef vector) (count - 1)
+
+-- | Delete the specified range of elements.
+vectorDeleteRange :: Vector a
+                     -- ^ the vector
+                     -> Int
+                     -- ^ the start index
+                     -> Int
+                     -- ^ the count of items to be removed
+                     -> IO ()
+vectorDeleteRange vector index len =
+  do count <- readIORef (vectorCountRef vector)
+     when (index < 0) $
+       error $
+       "The first index cannot be " ++
+       "negative: vectorDeleteRange."
+     when (index + len - 1 >= count) $
+       error $
+       "The last index must be less " ++
+       "than the count: vectorDeleteRange."
+     when (len < 0) $
+       error "Negative range length: vectorDeleteRange." 
+     array <- readIORef (vectorArrayRef vector)
+     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
+     writeIORef (vectorCountRef vector) (count - len)
      
 -- | Return the index of the item or -1.     
 vectorIndex :: Eq a => Vector a -> a -> IO Int
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
@@ -22,6 +22,7 @@
         vectorBinarySearch,
         vectorInsert,
         vectorDeleteAt,
+        vectorDeleteRange,
         vectorDelete,
         vectorDeleteBy,
         vectorIndex,
@@ -176,6 +177,35 @@
           writeArray array i x
      writeArray array (count - 1) undefined
      writeIORef (vectorCountRef vector) (count - 1)
+
+-- | Delete the specified range of elements.
+vectorDeleteRange :: Unboxed a
+                     => Vector a
+                     -- ^ the vector
+                     -> Int
+                     -- ^ the start index
+                     -> Int
+                     -- ^ the count of items to be removed
+                     -> IO ()
+vectorDeleteRange vector index len =
+  do count <- readIORef (vectorCountRef vector)
+     when (index < 0) $
+       error $
+       "The first index cannot be " ++
+       "negative: vectorDeleteRange."
+     when (index + len - 1 >= count) $
+       error $
+       "The last index must be less " ++
+       "than the count: vectorDeleteRange."
+     when (len < 0) $
+       error "Negative range length: vectorDeleteRange." 
+     array <- readIORef (vectorArrayRef vector)
+     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
+     writeIORef (vectorCountRef vector) (count - len)
      
 -- | Return the index of the item or -1.     
 vectorIndex :: (Unboxed a, Eq a) => Vector a -> a -> IO Int
diff --git a/aivika.cabal b/aivika.cabal
--- a/aivika.cabal
+++ b/aivika.cabal
@@ -1,5 +1,5 @@
 name:            aivika
-version:         4.3.2
+version:         4.3.3
 synopsis:        A multi-paradigm simulation library
 description:
     Aivika is a multi-paradigm simulation library with a strong emphasis
