diff --git a/prologue.cabal b/prologue.cabal
--- a/prologue.cabal
+++ b/prologue.cabal
@@ -1,5 +1,5 @@
 name: prologue
-version: 1.0.6
+version: 1.0.7
 cabal-version: >=1.10
 build-type: Simple
 license: Apache-2.0
@@ -22,30 +22,34 @@
 library
     exposed-modules:
         Prologue
+        Data.Typeable.Proxy.Abbr
         Data.Text.Class
         Data.String.Class
         Data.Default.Instances.Missing
         Data.Binary.Instances.Missing
     build-depends:
         base >=4.6 && <4.9,
+        bifunctors >=5.1,
         binary >=0.7.5.0,
-        cond >=0.4.1.1,
+        cond -any,
         container >=1.0,
         convert >=1.0,
         data-default >=0.5.3,
         data-layer >=1.0.1,
         errors >=2.0.1,
-        lens >=4.12.3,
+        lens >=4.13,
         lens-utils >=1.0,
         mtl >=2.2.1,
         pretty-show >=1.6.9,
         transformers >=0.4.2.0,
         transformers-base >=0.4.4,
-        text >=1.2.1.3,
+        text >=1.2.2.0,
         string-qq >=0.0.2,
-        vector >=0.10.12.3,
-        tuple >=0.3.0.2,
-        functor-utils >=1.0
+        vector >=0.11.0.0,
+        tuple -any,
+        functor-utils >=1.0,
+        impossible -any,
+        typelevel >=1.0.2
     default-language: Haskell2010
     default-extensions: ConstraintKinds DataKinds DefaultSignatures
                         DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric
diff --git a/src/Data/Typeable/Proxy/Abbr.hs b/src/Data/Typeable/Proxy/Abbr.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Typeable/Proxy/Abbr.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE PolyKinds #-}
+
+module Data.Typeable.Proxy.Abbr where
+
+import Data.Typeable
+
+p :: Proxy a
+p = Proxy
+
+type P a = Proxy a
diff --git a/src/Prologue.hs b/src/Prologue.hs
--- a/src/Prologue.hs
+++ b/src/Prologue.hs
@@ -46,17 +46,25 @@
 import           Data.Foldable                      as X (mapM_)
 import           Control.Error.Util                 as X (isLeft, isRight)
 import           Data.String.QQ                     as X (s)
-import           GHC.TypeLits                       as X (Nat, Symbol, SomeNat, SomeSymbol, KnownNat, natVal)
+import           GHC.TypeLits                       as X (Nat, Symbol, SomeNat, SomeSymbol, KnownNat, natVal, type (-), type (+))
 import           Data.Typeable                      as X (Proxy(Proxy), typeOf, typeRep)
 import           Data.Convert                       as X
 import           Data.Layer                         as X
+import           Data.Coat                          as X
 import           Data.Tuple.Curry                   as X (Curry)
 import           Data.Container.Class               as X (Container, Index, Item, intercalate)
 import           Data.Container.List                as X (FromList, fromList, ToList, toList)
 import           Data.Functor.Utils                 as X
+import           Type.Operators                     as X -- (($), (&))
+import           Type.Show                          as X (TypeShow, showType, printType, ppPrintType, ppShowType)
+import           Control.Exception.Base             as X (assert)
+import           Data.Impossible                    as X
+import           Data.Impossible.Compact            as X
+import           Data.Bool                          as X (bool)
+import           Data.Typeable.Proxy.Abbr           as X (P, p)
+import           Data.Bifunctor                     as X (Bifunctor, bimap)
 import qualified Data.Tuple.Curry                   as Tuple
 
-
 (++) :: Monoid a => a -> a -> a
 (++) = mappend
 
@@ -79,6 +87,8 @@
 
 --
 
+swap :: (a,b) -> (b,a)
+swap (a,b) = (b,a)
 
 fromJustM :: Monad m => Maybe a -> m a
 fromJustM Nothing  = fail "Prelude.fromJustM: Nothing"
@@ -160,3 +170,14 @@
 
 
 
+-- === Safe operations === --
+
+tryHead :: [a] -> Maybe a
+tryHead []      = Nothing
+tryHead (a : _) = Just a
+{-# INLINE tryHead #-}
+
+fromJustNote :: String -> Maybe a -> a
+fromJustNote n = \case
+    Just a  -> a
+    Nothing -> error n
