diff --git a/serokell-util.cabal b/serokell-util.cabal
--- a/serokell-util.cabal
+++ b/serokell-util.cabal
@@ -1,5 +1,5 @@
 name:                serokell-util
-version:             0.2.0.0
+version:             0.3
 synopsis:            General-purpose functions by Serokell
 homepage:            https://github.com/serokell/serokell-util
 license:             MIT
@@ -22,7 +22,6 @@
   exposed-modules:     Serokell.AcidState
                        Serokell.AcidState.ExtendedState
                        Serokell.AcidState.Instances
-                       Serokell.AcidState.Statistics
                        Serokell.AcidState.Util
                        Serokell.Arbitrary
                        Serokell.Aeson.Options
@@ -34,7 +33,6 @@
                        Serokell.Util.Base16
                        Serokell.Util.Base64
                        Serokell.Util.Bench
-                       Serokell.Util.Binary
                        Serokell.Util.Common
                        Serokell.Util.Concurrent
                        Serokell.Util.I18N
@@ -56,21 +54,15 @@
   build-depends:       QuickCheck >= 2.8.1
                      , acid-state
                      , aeson >= 0.11.0.0 && < 1.2.0.0
-                     , aeson-extra >= 0.4.0.0
                      , ansi-terminal
                      , base >= 4.8 && < 5
                      , base16-bytestring
                      , base64-bytestring
-                     , binary
-                     , binary-orphans
                      , bytestring
-                     , cereal
-                     , cereal-vector
                      , clock
                      , containers
                      , deepseq
                      , directory
-                     , either
                      , exceptions
                      , extra
                      , filepath
@@ -117,9 +109,7 @@
   type:                exitcode-stdio-1.0
   build-depends:       aeson >= 0.11.0.0 && < 1.2.0.0
                      , base >=4.8
-                     , binary
                      , bytestring
-                     , cereal
                      , hspec >= 2.1.10
                      , QuickCheck >= 2.8.1
                      , quickcheck-instances
diff --git a/src/Serokell/AcidState/Statistics.hs b/src/Serokell/AcidState/Statistics.hs
deleted file mode 100644
--- a/src/Serokell/AcidState/Statistics.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE Rank2Types                #-}
-
--- | Collect statistics about acid-state database.
-
-module Serokell.AcidState.Statistics
-       ( StoragePart (..)
-
-       , estimateMemoryUsage
-       ) where
-
-import           Control.Lens               (Getter, (^.))
-import qualified Data.ByteString            as BS (length)
-import           Data.SafeCopy              (SafeCopy, safePut)
-import           Data.Serialize.Put         (runPut)
-import           Data.Text                  (Text)
-
-import           Serokell.Data.Memory.Units (MemoryUnit, fromBytes)
-
-type PartName = Text
-
-data StoragePart storage = forall part. SafeCopy part =>
-                                        StoragePart
-    { spName   :: PartName
-    , spGetter :: Getter storage part
-    }
-
-estimateMemoryUsage
-    :: MemoryUnit unit
-    => [StoragePart s] -> s -> [(PartName, unit)]
-estimateMemoryUsage parts storage = map processPart parts
-  where
-    processPart StoragePart{..} =
-        ( spName
-        , fromBytes . toInteger . BS.length . runPut . safePut . (storage ^.) $
-          spGetter)
diff --git a/src/Serokell/Data/Memory/Units.hs b/src/Serokell/Data/Memory/Units.hs
--- a/src/Serokell/Data/Memory/Units.hs
+++ b/src/Serokell/Data/Memory/Units.hs
@@ -29,10 +29,7 @@
        ) where
 
 import           Control.DeepSeq        (NFData)
-import           Data.Binary            (Binary)
 import           Data.Proxy             (Proxy (Proxy))
-import           Data.SafeCopy          (SafeCopy)
-import           Data.Serialize         (Serialize)
 import           Data.Text.Lazy.Builder (Builder)
 import           Data.Typeable          (Typeable)
 import           Formatting             (bprint, stext, (%))
@@ -95,19 +92,17 @@
 
 newtype Byte =
     Byte Integer
-    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Serialize,Binary, Arbitrary)
+    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Arbitrary)
 
 instance NFData Byte
-instance SafeCopy Byte
 instance MemoryUnit Byte where
     bytesMultiplier Proxy = pow10 0
 
 newtype Kilobyte =
     Kilobyte Integer
-    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Serialize,Arbitrary)
+    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Arbitrary)
 
 instance NFData Kilobyte
-instance SafeCopy Kilobyte
 instance MemoryUnit Kilobyte where
     bytesMultiplier Proxy = pow10 3
 
@@ -115,27 +110,24 @@
 
 newtype Megabyte =
     Megabyte Integer
-    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Serialize,Arbitrary)
+    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Arbitrary)
 
 instance NFData Megabyte
-instance SafeCopy Megabyte
 instance MemoryUnit Megabyte where
     bytesMultiplier Proxy = pow10 6
 
 newtype Gigabyte =
     Gigabyte Integer
-    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Serialize,Arbitrary)
+    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Arbitrary)
 
 instance NFData Gigabyte
-instance SafeCopy Gigabyte
 instance MemoryUnit Gigabyte where
     bytesMultiplier Proxy = pow10 9
 
 newtype Terabyte =
     Terabyte Integer
-    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Serialize,Arbitrary)
+    deriving (Show,Eq,Num,Typeable,Integral,Real,Enum,Ord,Generic,Arbitrary)
 
 instance NFData Terabyte
-instance SafeCopy Terabyte
 instance MemoryUnit Terabyte where
     bytesMultiplier Proxy = pow10 12
diff --git a/src/Serokell/Data/Variant/Serialization.hs b/src/Serokell/Data/Variant/Serialization.hs
--- a/src/Serokell/Data/Variant/Serialization.hs
+++ b/src/Serokell/Data/Variant/Serialization.hs
@@ -9,17 +9,8 @@
 
 import qualified Data.Aeson                    as Aeson
 import           Data.Bifunctor                (bimap)
-import           Data.Binary                   (Binary)
-import           Data.Binary.Orphans           ()
-import           Data.Hashable                 (Hashable)
-import           Data.HashMap.Strict           (HashMap)
 import qualified Data.HashMap.Strict           as HM hiding (HashMap)
-import           Data.SafeCopy                 (SafeCopy)
 import           Data.Scientific               (floatingOrInteger)
-import qualified Data.Serialize                as Cereal
-import           Data.Text                     (Text)
-import qualified Data.Text.Encoding            as TE
-import           Data.Vector.Serialize         ()
 
 import           Serokell.Data.Variant.Variant (VarMap, Variant (..))
 import           Serokell.Util.Base64          (JsonByteString (JsonByteString))
@@ -81,25 +72,3 @@
                   (VarString key, ) <$> Aeson.parseJSON val) .
         HM.toList $
         v
-
---  —————————Cereal and SafeCopy serialization————————— --
--- This serialization is very simple: first byte is tag followed by actual value.
--- `decode . encode` should be `id`.
-
--- TODO: move it somewhere??
-instance Cereal.Serialize Text where
-    put = Cereal.put . TE.encodeUtf8
-    get = TE.decodeUtf8 <$> Cereal.get
-
-instance (Eq a, Hashable a, Cereal.Serialize a, Cereal.Serialize b) =>
-         Cereal.Serialize (HashMap a b) where
-    put = Cereal.put . HM.toList
-    get = HM.fromList <$> Cereal.get
-
-instance Cereal.Serialize Variant
-
-instance SafeCopy Variant
-
---  —————————Binary serialization————————— --
--- Here we use Generic support, it should be good enough.
-instance Binary Variant
diff --git a/src/Serokell/Util.hs b/src/Serokell/Util.hs
--- a/src/Serokell/Util.hs
+++ b/src/Serokell/Util.hs
@@ -7,7 +7,6 @@
 
 import           Serokell.Util.ANSI         as Exports
 import           Serokell.Util.Bench        as Exports
-import           Serokell.Util.Binary       as Exports
 import           Serokell.Util.Common       as Exports
 import           Serokell.Util.Concurrent   as Exports
 import           Serokell.Util.Exceptions   as Exports
diff --git a/src/Serokell/Util/Base64.hs b/src/Serokell/Util/Base64.hs
--- a/src/Serokell/Util/Base64.hs
+++ b/src/Serokell/Util/Base64.hs
@@ -17,10 +17,10 @@
 import           Data.Aeson.Types           (FromJSONKey (..),
                                              FromJSONKeyFunction (FromJSONKeyTextParser),
                                              ToJSONKey (..), toJSONKeyText)
+import           Data.Bifunctor             (first)
 import qualified Data.ByteString            as BS
 import qualified Data.ByteString.Base64     as B64
 import qualified Data.ByteString.Base64.URL as B64url
-import           Data.Either.Combinators    (mapLeft)
 import           Data.Hashable              (Hashable)
 import qualified Data.Text                  as T
 import           Data.Text.Encoding         (decodeUtf8, encodeUtf8)
@@ -34,7 +34,7 @@
 
 -- | Decode base64-encoded ByteString.
 decode :: T.Text -> Either T.Text BS.ByteString
-decode = mapLeft T.pack . B64.decode . encodeUtf8
+decode = first T.pack . B64.decode . encodeUtf8
 
 -- | Apply base64url encoding to strict ByteString.
 encodeUrl :: BS.ByteString -> T.Text
@@ -42,7 +42,7 @@
 
 -- | Decode base64url-encoded ByteString.
 decodeUrl :: T.Text -> Either T.Text BS.ByteString
-decodeUrl = mapLeft T.pack . B64url.decode . encodeUtf8
+decodeUrl = first T.pack . B64url.decode . encodeUtf8
 
 -- | Construct Builder from bytestring formatting it in Base64.
 formatBase64 :: BS.ByteString -> Builder
diff --git a/src/Serokell/Util/Binary.hs b/src/Serokell/Util/Binary.hs
deleted file mode 100644
--- a/src/Serokell/Util/Binary.hs
+++ /dev/null
@@ -1,17 +0,0 @@
--- | Utilities for @Data.Binary@.
-
-module Serokell.Util.Binary
-       ( decodeFull
-       ) where
-
-import           Data.Binary (Binary, decodeOrFail)
-import qualified Data.ByteString.Lazy as BSL
-import           Data.ByteString.Lazy (ByteString)
-
--- | Like 'decode', but ensures that the whole input has been consumed.
-decodeFull :: Binary a => ByteString -> Either String a
-decodeFull bs = case decodeOrFail bs of
-    Left (_, _, err) -> Left ("decodeFull: " ++ err)
-    Right (unconsumed, _, a)
-        | BSL.null unconsumed -> Right a
-        | otherwise -> Left "decodeFull: unconsumed input"
diff --git a/src/Serokell/Util/I18N.hs b/src/Serokell/Util/I18N.hs
--- a/src/Serokell/Util/I18N.hs
+++ b/src/Serokell/Util/I18N.hs
@@ -11,8 +11,7 @@
        , ToReplaceToken(..)
        ) where
 
-import           Data.Aeson.Extra.Map   (FromJSONKey (..), getMap)
-import qualified Data.Aeson.Types       as AT
+import qualified Data.Aeson             as AT
 import           Data.ByteString        as BS
 import qualified Data.Map.Strict        as M
 import           Data.Text              as T
@@ -25,19 +24,15 @@
 -- It's better to get rid of aeson-extra depricated things here, but
 -- aeson-1.0.0.0 structure of FromJSONKey requires fromJSONKeyList
 -- which is unobvious to implement.
-class (Eq a, Ord a, FromJSONKey a) => YamlMapKey a
-
-#if MIN_VERSION_aeson(1,0,0)
-instance (Generic a, AT.GFromJSON AT.Zero (Rep a)) =>
-#else
-instance (Generic a, AT.GFromJSON (Rep a)) =>
-#endif
-         FromJSONKey a where
-    parseJSONKey l = AT.genericParseJSON defaultOptions (AT.String l)
-
+class (Eq a, Ord a, AT.FromJSONKey a, AT.FromJSON a) => YamlMapKey a
 
 #if MIN_VERSION_aeson(1,0,0)
-instance (Eq a, Ord a, Generic a, AT.GFromJSON AT.Zero (Rep a)) =>
+instance (Eq a,
+          Ord a,
+          Generic a,
+          AT.GFromJSON AT.Zero (Rep a),
+          AT.FromJSONKey a,
+          AT.FromJSON a) =>
 #else
 instance (Eq a, Ord a, Generic a, AT.GFromJSON (Rep a)) =>
 #endif
@@ -49,15 +44,11 @@
          => BS.ByteString
          -> Translations lang token
 fromYaml yamlStr =
-    toLangMap $
     either
         (error .
          T.unpack . sformat ("Error during translation YAML parsing " % build))
         id $
     decodeEither yamlStr
-  where
-    toLangMap = fmap getMap . getMap
-
 
 class (Ord a, Eq a) => ToReplaceToken a where
     toReplaceToken :: a -> T.Text
diff --git a/src/Serokell/Util/Parse/Common.hs b/src/Serokell/Util/Parse/Common.hs
--- a/src/Serokell/Util/Parse/Common.hs
+++ b/src/Serokell/Util/Parse/Common.hs
@@ -14,7 +14,7 @@
        ) where
 
 import           Control.Applicative (some)
-import           Text.Parsec         (Parsec, ParsecT, Stream, option, satisfy)
+import           Text.Parsec         (ParsecT, Stream, option, satisfy)
 import           Text.Parsec.Char    (digit)
 
 type CharParser a = forall s u m. Stream s m Char => ParsecT s u m a
diff --git a/test/Test/Serokell/Data/Variant/VariantSpec.hs b/test/Test/Serokell/Data/Variant/VariantSpec.hs
--- a/test/Test/Serokell/Data/Variant/VariantSpec.hs
+++ b/test/Test/Serokell/Data/Variant/VariantSpec.hs
@@ -6,11 +6,8 @@
        ) where
 
 import qualified Data.Aeson            as A (decode, encode)
-import qualified Data.Binary           as B (decode, encode)
 import qualified Data.HashMap.Lazy     as HM (elems, fromList, keys)
-import qualified Data.SafeCopy         as SC (safeGet, safePut)
 import           Data.Scientific       (floatingOrInteger, fromFloatDigits)
-import qualified Data.Serialize        as C (decode, encode, runGet, runPut)
 import           Data.Text             (unpack)
 import qualified Data.Vector           as V (map)
 import           Test.Hspec            (Spec, describe)
@@ -30,12 +27,6 @@
                        \(getVariant -> a) -> (jsonFixer a) === jsonMid a
                    prop "Variant (Only VarBytes)" $
                        \(getVarBytes -> a) -> a === (bytesFun $ jsonMid a)
-               prop "Binary" $
-                   \(a :: S.Variant) -> a === binMid a
-               prop "SafeCopy" $
-                   \(a :: S.Variant) -> a === safeCopyMid a
-               prop "Serialize" $
-                   \(a :: S.Variant) -> a === cerealMid a
 
 jsonFixer :: S.Variant -> S.Variant
 jsonFixer (S.VarMap m) = let ks = map toStr $ HM.keys m
@@ -69,12 +60,3 @@
   where
      right = either (error . unpack) id $ S.decode s
 bytesFun _ = error "[bytesFun:] called with Variant that was not VarBytes"
-
-binMid :: S.Variant -> S.Variant
-binMid = B.decode . B.encode
-
-cerealMid :: S.Variant -> S.Variant
-cerealMid = either error id . C.decode . C.encode
-
-safeCopyMid :: S.Variant -> S.Variant
-safeCopyMid = either error id . C.runGet SC.safeGet . C.runPut . SC.safePut
