diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,11 @@
+0.9.2
+=====
+
+* [#114](https://github.com/serokell/universum/issues/114):
+  Reexport more functions from `safe-exceptions`.
+* [#100](https://github.com/serokell/universum/issues/100):
+  Add `bug` function = `impureThrow`.
+
 0.9.1
 =====
 
diff --git a/src/Exceptions.hs b/src/Exceptions.hs
--- a/src/Exceptions.hs
+++ b/src/Exceptions.hs
@@ -8,17 +8,45 @@
 module Exceptions
        ( module Control.Exception.Safe
 
+#if ( __GLASGOW_HASKELL__ >= 800 )
+       , Bug (..)
+       , bug
+#endif
        , note
        ) where
 
 -- exceptions from safe-exceptions
-import           Control.Exception.Safe (Exception, MonadCatch, MonadMask (..),
-                                         MonadThrow, SomeException (..), bracket,
-                                         bracket_, catch, catchAny, finally, throwM)
+import Control.Exception.Safe (Exception (..), MonadCatch, MonadMask (..), MonadThrow,
+                               SomeException (..), bracket, bracketOnError, bracket_, catch,
+                               catchAny, displayException, finally, handleAny, mask_, onException,
+                               throwM, try, tryAny)
 
 import           Control.Applicative    (Applicative (pure))
 import           Control.Monad.Except   (MonadError, throwError)
 import           Data.Maybe             (Maybe, maybe)
+
+#if ( __GLASGOW_HASKELL__ >= 800 )
+import Data.List ((++))
+import GHC.Show (Show)
+import GHC.Stack (CallStack, HasCallStack, callStack, prettyCallStack)
+
+import qualified Control.Exception.Safe as Safe (impureThrow, toException)
+
+-- | Type that represents exceptions used in cases when a particular codepath
+-- is not meant to be ever executed, but happens to be executed anyway.
+data Bug = Bug SomeException CallStack
+    deriving (Show)
+
+instance Exception Bug where
+    displayException (Bug e cStack) = displayException e ++ "\n"
+                                   ++ prettyCallStack cStack
+
+-- | Generate a pure value which, when forced, will synchronously
+-- throw the exception wrapped into 'Bug' data type.
+bug :: (HasCallStack, Exception e) => e -> a
+bug e = Safe.impureThrow (Bug (Safe.toException e) callStack)
+#endif
+
 
 -- To suppress redundant applicative constraint warning on GHC 8.0
 -- | Throws error for 'Maybe' if 'Data.Maybe.Nothing' is given.
diff --git a/universum.cabal b/universum.cabal
--- a/universum.cabal
+++ b/universum.cabal
@@ -1,5 +1,5 @@
 name: universum
-version: 0.9.1
+version: 0.9.2
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -51,26 +51,26 @@
         Monad.Maybe
         Monad.Trans
     build-depends:
-        base <5,
-        bytestring <0.11,
-        containers <0.6,
-        deepseq <1.5,
-        exceptions <0.9,
-        ghc-prim <0.6,
-        hashable <1.3,
-        microlens <0.5,
-        microlens-mtl <0.2,
-        mtl <2.3,
-        safe <0.4,
-        safe-exceptions <0.2,
-        stm <2.5,
-        text <1.3,
-        text-format <0.4,
-        transformers <0.6,
-        type-operators <0.2,
-        unordered-containers <0.3,
-        utf8-string <1.1,
-        vector <0.13
+        base >=4.9.1.0 && <5,
+        bytestring >=0.10.8.1,
+        containers >=0.5.7.1,
+        deepseq >=1.4.2.0,
+        exceptions >=0.8.3,
+        ghc-prim >=0.5.0.0,
+        hashable >=1.2.6.1,
+        microlens >=0.4.8.1,
+        microlens-mtl >=0.1.11.0,
+        mtl >=2.2.1,
+        safe >=0.3.15,
+        safe-exceptions >=0.1.6.0,
+        stm >=2.4.4.1,
+        text >=1.2.2.2,
+        text-format >=0.3.1.1,
+        transformers >=0.5.2.0,
+        type-operators >=0.1.0.4,
+        unordered-containers >=0.2.8.0,
+        utf8-string >=1.0.1.1,
+        vector >=0.12.0.1
     default-language: Haskell2010
     default-extensions: NoImplicitPrelude OverloadedStrings
     hs-source-dirs: src
@@ -81,16 +81,16 @@
     type: exitcode-stdio-1.0
     main-is: Main.hs
     build-depends:
-        base <5,
+        base >=4.9.1.0 && <5,
         universum -any,
-        containers <0.6,
-        criterion <1.2,
-        deepseq <1.5,
-        hashable <1.3,
-        mtl <2.3,
-        semigroups <0.19,
-        text <1.3,
-        unordered-containers <0.3
+        containers >=0.5.7.1,
+        criterion >=1.1.4.0,
+        deepseq >=1.4.2.0,
+        hashable >=1.2.6.1,
+        mtl >=2.2.1,
+        semigroups >=0.18.3,
+        text >=1.2.2.2,
+        unordered-containers >=0.2.8.0
     default-language: Haskell2010
     hs-source-dirs: benchmark
     ghc-options: -Wall -O2 -threaded -rtsopts -with-rtsopts=-N
