diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2016, Nikita Volkov
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/library/Rebase/Contravariant/Extras.hs b/library/Rebase/Contravariant/Extras.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Contravariant/Extras.hs
@@ -0,0 +1,7 @@
+module Rebase.Contravariant.Extras
+(
+  module Contravariant.Extras,
+)
+where
+
+import Contravariant.Extras
diff --git a/library/Rebase/Data/Bifunctor.hs b/library/Rebase/Data/Bifunctor.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Bifunctor.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Bifunctor
+(
+  module Data.Bifunctor,
+)
+where
+
+import Data.Bifunctor
diff --git a/library/Rebase/Data/ByteString.hs b/library/Rebase/Data/ByteString.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/ByteString.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.ByteString
+(
+  module Data.ByteString,
+)
+where
+
+import Data.ByteString
diff --git a/library/Rebase/Data/ByteString/Lazy.hs b/library/Rebase/Data/ByteString/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/ByteString/Lazy.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.ByteString.Lazy
+(
+  module Data.ByteString.Lazy,
+)
+where
+
+import Data.ByteString.Lazy
diff --git a/library/Rebase/Data/Functor/Contravariant.hs b/library/Rebase/Data/Functor/Contravariant.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Functor/Contravariant.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Functor.Contravariant
+(
+  module Data.Functor.Contravariant,
+)
+where
+
+import Data.Functor.Contravariant
diff --git a/library/Rebase/Data/Functor/Contravariant/Divisible.hs b/library/Rebase/Data/Functor/Contravariant/Divisible.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Functor/Contravariant/Divisible.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Functor.Contravariant.Divisible
+(
+  module Data.Functor.Contravariant.Divisible,
+)
+where
+
+import Data.Functor.Contravariant.Divisible
diff --git a/library/Rebase/Data/HashMap/Strict.hs b/library/Rebase/Data/HashMap/Strict.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/HashMap/Strict.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.HashMap.Strict
+(
+  module Data.HashMap.Strict,
+)
+where
+
+import Data.HashMap.Strict
diff --git a/library/Rebase/Data/HashSet.hs b/library/Rebase/Data/HashSet.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/HashSet.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.HashSet
+(
+  module Data.HashSet,
+)
+where
+
+import Data.HashSet
diff --git a/library/Rebase/Data/Profunctor.hs b/library/Rebase/Data/Profunctor.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Profunctor.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Profunctor
+(
+  module Data.Profunctor,
+)
+where
+
+import Data.Profunctor
diff --git a/library/Rebase/Data/Profunctor/Unsafe.hs b/library/Rebase/Data/Profunctor/Unsafe.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Profunctor/Unsafe.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Profunctor.Unsafe
+(
+  module Data.Profunctor.Unsafe,
+)
+where
+
+import Data.Profunctor.Unsafe
diff --git a/library/Rebase/Data/Scientific.hs b/library/Rebase/Data/Scientific.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Scientific.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Scientific
+(
+  module Data.Scientific,
+)
+where
+
+import Data.Scientific
diff --git a/library/Rebase/Data/Text.hs b/library/Rebase/Data/Text.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Text.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Text
+(
+  module Data.Text,
+)
+where
+
+import Data.Text
diff --git a/library/Rebase/Data/Text/IO.hs b/library/Rebase/Data/Text/IO.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Text/IO.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Text.IO
+(
+  module Data.Text.IO,
+)
+where
+
+import Data.Text.IO
diff --git a/library/Rebase/Data/Text/Lazy.hs b/library/Rebase/Data/Text/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Text/Lazy.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Text.Lazy
+(
+  module Data.Text.Lazy,
+)
+where
+
+import Data.Text.Lazy
diff --git a/library/Rebase/Data/Text/Lazy/IO.hs b/library/Rebase/Data/Text/Lazy/IO.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Text/Lazy/IO.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Text.Lazy.IO
+(
+  module Data.Text.Lazy.IO,
+)
+where
+
+import Data.Text.Lazy.IO
diff --git a/library/Rebase/Data/Time.hs b/library/Rebase/Data/Time.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Time.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Time
+(
+  module Data.Time,
+)
+where
+
+import Data.Time
diff --git a/library/Rebase/Data/UUID.hs b/library/Rebase/Data/UUID.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/UUID.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.UUID
+(
+  module Data.UUID,
+)
+where
+
+import Data.UUID
diff --git a/library/Rebase/Data/Vector.hs b/library/Rebase/Data/Vector.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Vector.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Vector
+(
+  module Data.Vector,
+)
+where
+
+import Data.Vector
diff --git a/library/Rebase/Prelude.hs b/library/Rebase/Prelude.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Prelude.hs
@@ -0,0 +1,66 @@
+-- |
+-- This module reexports the non-conflicting definitions from
+-- the modules exported by this package,
+-- providing a much more featureful alternative to the standard Prelude.
+--
+-- For details check out the source.
+module Rebase.Prelude
+(
+  module Exports,
+)
+where
+
+
+-- base-prelude
+-------------------------
+import BasePrelude as Exports hiding (fail)
+
+-- profunctors
+-------------------------
+import Rebase.Data.Profunctor.Unsafe as Exports
+
+-- contravariant
+-------------------------
+import Rebase.Data.Functor.Contravariant as Exports
+import Rebase.Data.Functor.Contravariant.Divisible as Exports
+
+-- contravariant-extras
+-------------------------
+import Rebase.Contravariant.Extras as Exports
+
+-- vector
+-------------------------
+import Rebase.Data.Vector as Exports (Vector)
+
+-- containers
+-------------------------
+import Rebase.Data.IntMap.Strict as Exports (IntMap)
+import Rebase.Data.IntSet as Exports (IntSet)
+import Rebase.Data.Map.Strict as Exports (Map)
+import Rebase.Data.Sequence as Exports (Seq)
+import Rebase.Data.Set as Exports (Set)
+
+-- unordered-containers
+-------------------------
+import Rebase.Data.HashSet as Exports (HashSet)
+import Rebase.Data.HashMap.Strict as Exports (HashMap)
+
+-- bytestring
+-------------------------
+import Rebase.Data.ByteString as Exports (ByteString)
+
+-- text
+-------------------------
+import Rebase.Data.Text as Exports (Text)
+
+-- scientific
+-------------------------
+import Rebase.Data.Scientific as Exports (Scientific)
+
+-- uuid
+-------------------------
+import Rebase.Data.UUID as Exports (UUID)
+
+-- time
+-------------------------
+import Rebase.Data.Time as Exports
diff --git a/rebase.cabal b/rebase.cabal
new file mode 100644
--- /dev/null
+++ b/rebase.cabal
@@ -0,0 +1,108 @@
+name:
+  rebase
+version:
+  0.1.1
+synopsis:
+  A more progressive alternative to the "base" package
+description:
+  This package is intended for those who are tired of keeping
+  long lists of dependencies to the same essential libraries in each package
+  as well as the endless imports of the same APIs all over again.
+  It also supports the modern tendencies in the language.
+  .
+  To solve those problems this package does the following:
+  .
+  * Reexport the original APIs under the \"Rebase\" namespace.
+  .
+  * Export all the possible non-conflicting symbols from the \"Rebase.Prelude\" module.
+  .
+  * Give priority to the modern practices in the conflicting cases.
+  .
+  The policy behind the package is only to reexport the non-ambiguous
+  and non-controversial APIs, which the community has obviously settled on.
+  The package is intended to rapidly evolve with the contribution from the community,
+  with the missing features being added with pull-requests.
+homepage:
+  https://github.com/nikita-volkov/rebase 
+bug-reports:
+  https://github.com/nikita-volkov/rebase/issues 
+author:
+  Nikita Volkov <nikita.y.volkov@mail.ru>
+maintainer:
+  Nikita Volkov <nikita.y.volkov@mail.ru>
+copyright:
+  (c) 2016, Nikita Volkov
+license:
+  MIT
+license-file:
+  LICENSE
+build-type:
+  Simple
+cabal-version:
+  >=1.10
+
+
+source-repository head
+  type:
+    git
+  location:
+    git://github.com/nikita-volkov/rebase.git
+
+
+library
+  hs-source-dirs:
+    library
+  default-extensions:
+    NoImplicitPrelude
+  default-language:
+    Haskell2010
+  other-modules:
+  exposed-modules:
+    Rebase.Prelude
+    -- vector:
+    Rebase.Data.Vector
+    -- unordered-containers:
+    Rebase.Data.HashMap.Strict
+    Rebase.Data.HashSet
+    -- bytestring:
+    Rebase.Data.ByteString
+    Rebase.Data.ByteString.Lazy
+    -- text:
+    Rebase.Data.Text
+    Rebase.Data.Text.IO
+    Rebase.Data.Text.Lazy
+    Rebase.Data.Text.Lazy.IO
+    -- time:
+    Rebase.Data.Time
+    -- scientific:
+    Rebase.Data.Scientific
+    -- uuid:
+    Rebase.Data.UUID
+    -- bifunctors:
+    Rebase.Data.Bifunctor
+    -- profunctors:
+    Rebase.Data.Profunctor
+    Rebase.Data.Profunctor.Unsafe
+    -- contravariant:
+    Rebase.Data.Functor.Contravariant
+    Rebase.Data.Functor.Contravariant.Divisible
+    -- contravariant-extras:
+    Rebase.Contravariant.Extras
+  build-depends:
+    -- data:
+    vector >= 0.10 && < 0.12,
+    containers >= 0.5 && < 0.6,
+    unordered-containers >= 0.2 && < 0.3,
+    bytestring >= 0.10.4 && < 0.11,
+    text >= 1 && < 2,
+    time >= 1.4 && < 1.6,
+    scientific >= 0.3 && < 0.4,
+    uuid == 1.3.*,
+    -- control:
+    bifunctors >= 5.2 && < 6,
+    profunctors >= 5.2 && < 6,
+    contravariant >= 1.4 && < 2,
+    contravariant-extras == 0.3.*,
+    -- general:
+    base-prelude >= 0.1.21 && < 0.2,
+    base >= 4.6 && < 4.9
