diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Revision history for cronus
+
+## 0.1.0.0 -- 2020-07-02
+
+* Created cronus
diff --git a/Cronus.hs b/Cronus.hs
new file mode 100644
--- /dev/null
+++ b/Cronus.hs
@@ -0,0 +1,574 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{- |
+Name: Cronus
+
+This module is the big hammer of alternatives to the standard Prelude.
+It is meant to optimize compatibility with the standard Prelude and the
+various packages which are built on top of it, while exposing types and
+functions that I want available to me in the vast majority of "real world
+applications."
+-}
+module Cronus
+( 
+--  ** Bool
+  Bool(True, False)
+, (&&), (||), not, otherwise
+-- ** Maybe
+, Maybe(Just, Nothing)
+, maybe
+, catMaybes
+, mapMaybe
+, listToMaybe
+, maybeToList
+, fromMaybe
+, isNothing
+, isJust
+-- ** Eq
+, Eq(..)
+-- ** Ord
+, Ordering(LT, EQ, GT)
+, Ord(..)
+-- ** Char
+, Char
+, isControl
+, isSpace
+, isLower
+, isUpper
+, isAlpha
+, isAlphaNum
+, isPrint
+, isDigit
+, isOctDigit
+, isHexDigit
+, isLetter
+, isMark
+, isNumber
+, isPunctuation
+, isSymbol
+, isSeparator
+, isAscii
+, isLatin1
+, isAsciiUpper
+, isAsciiLower
+, ord
+, chr
+-- ** Convenience Functions
+, fst, snd
+, curry
+, uncurry
+, on
+, flip
+, const
+, until
+, (&)
+, ($)
+-- ** Enum
+, Enum(..)
+-- ** Bounded
+, Bounded(..)
+-- ** Numeric Types
+, Int
+, Int8, Int16, Int32, Int64
+, Integer
+, Natural
+, Float
+, Double
+, Word
+, Word8, Word16, Word32, Word64
+-- ** The Numeric Hierarchy
+, Rational
+, Num(..), subtract
+, Real(toRational)
+, Integral(..)
+, Fractional(..)
+, Floating(..)
+, RealFrac(..)
+, RealFloat(..)
+-- ** Functions on Numbers
+, even
+, odd
+, gcd
+, lcm
+, (^)
+, (^^)
+, fromIntegral
+, realToFrac
+-- ** Show
+, Show(..)
+-- ** Read
+, Read(..)
+, readMaybe
+-- ** Semigroup
+, Semigroup(..)
+-- ** Monoid
+, Monoid(..)
+-- ** Functor
+, Functor(..)
+, (<$>)
+, void
+-- ** Applicative
+, Applicative(..)
+, Alternative(..)
+, ZipList(..)
+, (<**>)
+, liftA
+, liftA3
+, optional
+-- ** Monad
+, Monad(..)
+, mfilter
+, mapAndUnzipM
+, zipWithM
+, zipWithM_
+, foldM
+, foldM_
+, replicateM
+, replicateM_
+, guard
+, when
+, unless
+, liftM
+, liftM2
+, liftM3
+, liftM4
+, liftM5
+, ap 
+, (<$!>)
+, MonadPlus(..)
+, MonadFail(..)
+, mapM_
+, sequence_
+, (=<<)
+, Kleisli(..)
+-- ** Foldable
+, Foldable(..)
+, foldrM
+, foldlM
+, for_
+, for
+, maximumBy
+, minimumBy
+, find
+, msum
+-- ** Traversable
+, Traversable(..)
+, traverse_
+, sequenceA_
+, asum
+, forM_
+, forM
+, mapAccumL
+, mapAccumR
+-- ** Category
+, Category(..)
+, (>>>)
+, (<<<)
+-- ** error and undefined
+, error
+, undefined
+-- ** Strictness
+, seq
+, ($!)
+, deepseq
+, ($!!)
+, force
+, NFData(..)
+-- ** List Functions
+, reverse
+, and
+, or
+, any
+, all
+, concat
+, concatMap
+, scanl
+, scanr
+, iterate
+, repeat
+, replicate
+, cycle
+, take
+, drop
+, takeWhile
+, dropWhile
+, span
+, break
+, splitAt
+, notElem
+, lookup
+, zip
+, zip3
+, zipWith
+, zipWith3
+, unzip
+, unzip3
+-- ** IO
+, IO
+-- ** ST
+, ST
+, runST
+, STRef
+, newSTRef
+, writeSTRef
+, modifySTRef
+, modifySTRef'
+-- ** Exceptions
+, throwIO
+, SomeException
+, Exception(..)
+, catch
+, ArithException(..)
+, ArrayException(..)
+, AssertionFailed(..)
+, SomeAsyncException(..)
+, AsyncException(..)
+, asyncExceptionToException
+, asyncExceptionFromException
+, NonTermination(..)
+, NestedAtomically(..)
+, BlockedIndefinitelyOnMVar(..)
+, BlockedIndefinitelyOnSTM(..)
+, AllocationLimitExceeded(..)
+, CompactionFailed(..)
+, Deadlock(..)
+, NoMethodError(..)
+, PatternMatchFail(..)
+, RecConError(..)
+, RecSelError(..)
+, RecUpdError(..)
+, ErrorCall(..)
+, TypeError(..)
+, throw
+, ioError
+, IOError
+, catches
+, Handler(..)
+, catchJust
+, handle
+, handleJust
+, try
+, tryJust
+, evaluate
+, mapException
+, mask
+, mask_
+, uninterruptibleMask
+, uninterruptibleMask_
+, MaskingState(..)
+, getMaskingState
+, interruptible
+, allowInterrupt
+, assert
+, bracket
+, bracket_
+, bracketOnError
+, finally
+, onException
+-- ** Typeable
+, Typeable(..)
+, typeOf
+, typeRep
+, TypeRep
+, (:~:)(Refl)
+, (:~~:)(HRefl)
+, cast
+, eqT
+, gcast
+, gcast1
+, gcast2
+, typeRepFingerprint
+-- ** Proxy
+, Proxy(Proxy)
+-- ** Concurrency
+, forkIO
+, ThreadId
+, myThreadId
+, forkFinally
+, forkIOWithUnmask
+, killThread
+, throwTo
+, forkOn
+, forkOnWithUnmask
+, getNumCapabilities
+, setNumCapabilities
+, threadCapability
+, yield
+, threadDelay
+, threadWaitRead
+, threadWaitWrite
+, threadWaitReadSTM
+, MVar
+, newMVar
+, takeMVar
+, readMVar
+, swapMVar
+, tryTakeMVar
+, putMVar
+, tryPutMVar
+, withMVar
+, isEmptyMVar
+, modifyMVar_
+, modifyMVar
+, modifyMVarMasked
+, tryReadMVar
+, mkWeakMVar
+, Chan
+, newChan
+, writeChan
+, readChan
+, dupChan
+, getChanContents
+, writeList2Chan
+, QSem
+, newQSem
+, waitQSem
+, signalQSem
+, QSemN
+, newQSemN
+, waitQSemN
+, signalQSemN
+, rtsSupportsBoundThreads
+, forkOSWithUnmask
+, isCurrentThreadBound
+, runInBoundThread
+, runInUnboundThread
+, mkWeakThreadId
+-- ** ByteString
+, ByteString
+-- ** Text
+, Text
+-- ** Ordered Containers
+, Graph
+, IntMap
+, Map
+, Set
+, Seq
+, IntSet
+, Tree
+-- ** Unordered Containers
+, Hashable(..)
+, HashMap
+, HashSet
+-- ** MonadTrans
+, MonadTrans(..)
+-- ** MonadIO
+, MonadIO(..)
+-- ** Reader
+, ReaderT(..)
+, MonadReader(..)
+, asks
+, Reader
+, runReader
+, mapReader
+, withReader
+-- ** State
+, StateT(..)
+, MonadState(..)
+, State
+, modify
+, modify'
+, gets
+-- ** CPSed Writer
+, WriterT(..)
+, MonadWriter(..)
+, listens
+, censor
+, Writer
+, runWriter
+, execWriter
+, mapWriter
+, execWriterT
+, mapWriterT
+-- ** MaybeT
+, MaybeT(..)
+, mapMaybeT
+, maybeToExceptT
+, exceptToMaybeT
+-- ** ExceptT
+, ExceptT(..)
+, Except
+, except
+, runExcept
+, mapExcept
+, withExcept
+, mapExceptT
+, withExceptT
+, throwE
+, catchE
+-- ** RWST with CPSed Writer
+, RWST(..)
+, RWS
+, rws
+, runRWS
+, evalRWS
+, execRWS
+, mapRWS
+, withRWS
+, evalRWST
+, execRWST
+, mapRWST
+, withRWST
+-- ** Functor Combinators
+, Identity(..)
+, Const(..)
+, Sum(..)
+, Product(..)
+, Compose(..)
+-- ** Contravariant Functor
+, Contravariant(..)
+-- ** Unique
+, Unique(..)
+, newUnique
+, hashUnique
+-- ** Version
+, Version(..)
+-- ** Void
+, Void(..)
+-- ** Bitraversable
+, Bitraversable(..)
+, bisequenceA
+, bisequence
+, bimapM
+, bifor
+, biforM
+, bimapAccumL
+, bimapAccumR
+, bimapDefault
+, bifoldMapDefault
+-- ** Data.Coerce
+, Coercible(..)
+, coerce
+-- ** Dynamic
+, Dynamic
+, toDyn
+, fromDyn
+, fromDynamic
+, dynApply
+, dynApp
+, dynTypeRep
+-- ** Either
+, Either(Left, Right)
+, either
+, lefts
+, rights
+, isLeft
+, isRight
+, fromLeft
+, fromRight
+, partitionEithers
+-- ** Ix
+, Ix(..)
+-- ** IORef
+, IORef
+, newIORef
+, readIORef
+, writeIORef
+, modifyIORef
+, modifyIORef'
+, atomicModifyIORef
+, atomicModifyIORef'
+, atomicWriteIORef
+, mkWeakIORef
+-- ** MonadFix
+, MonadFix(..)
+, fix
+-- ** Arrow Operators
+, (&&&)
+, (***)
+-- ** Bifunctor
+, Bifunctor(..)
+-- ** Profunctor
+, Profunctor(..)
+, Strong(..)
+, Choice(..)
+, Closed(..)
+, curry'
+, Mapping(..)
+, Costrong(..)
+, Cochoice(..)
+, Star(..)
+, Costar(..)
+, Forget(..)
+-- ** Unboxed Vectors
+, Vector
+, MVector
+, Unbox(..)
+-- ** Comonads
+, Comonad(..)
+, liftW
+, wfix
+, cfix
+, kfix
+, (=>=)
+, (=<=)
+, (<<=)
+, (=>>)
+, ComonadApply(..)
+, (<@@>)
+, liftW2
+, liftW3
+, Cokleisli(..)
+) where
+
+import Data.Profunctor
+import Data.Bifunctor (Bifunctor(..))
+import Control.Arrow ((&&&), (***), Kleisli(..))
+import Data.Function ((&), ($), on, flip, const)
+import Control.Category
+import GHC.Num
+import Prelude hiding ((.), id)
+import Data.Int
+import Control.Monad
+import Control.Applicative
+import Data.Word
+import Data.Foldable
+import Data.Traversable
+import Text.Read
+import Control.Monad.ST
+import Control.Concurrent
+import Control.Exception
+import Data.Typeable
+import Control.DeepSeq
+import Text.Read (readMaybe)
+import Data.ByteString (ByteString)
+import Data.Text (Text)
+import Data.IntMap (IntMap)
+import Data.IntMap.Lazy (IntMap)
+import Data.Graph (Graph)
+import Data.Map (Map)
+import Data.Sequence (Seq)
+import Data.Set (Set)
+import Data.IntSet (IntSet)
+import Data.Tree (Tree)
+import Data.HashMap.Lazy (HashMap)
+import Data.HashMap.Strict (HashMap)
+import Data.HashSet (HashSet)
+import Data.Hashable
+import Control.Monad.Trans
+import Control.Monad.Reader
+import Control.Monad.State
+import Control.Monad.Writer (MonadWriter(..))
+import Control.Monad.Trans.Writer.CPS
+import Control.Monad.Trans.Maybe
+import Control.Monad.Trans.RWS.CPS hiding (reader, ask, local, asks, writer, tell, listen, listens, pass, censor, state, get, put, modify, gets)
+import Control.Monad.Trans.Except
+import Data.Functor.Identity
+import Data.Functor.Const
+import Data.Functor.Sum
+import Data.Functor.Product
+import Data.Functor.Compose
+import Data.Functor.Contravariant
+import Data.Unique
+import Data.Version
+import Data.Bitraversable
+import Data.Void
+import Data.Coerce (Coercible, coerce)
+import Data.Dynamic
+import Data.Maybe
+import Data.Either
+import Data.Ix
+import Data.IORef
+import Data.STRef
+import Data.Char
+import Data.Vector.Unboxed (Vector, MVector, Unbox(..))
+import Control.Comonad
diff --git a/Cronus/ByteString/Lazy.hs b/Cronus/ByteString/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/ByteString/Lazy.hs
@@ -0,0 +1,5 @@
+module Cronus.ByteString.Lazy
+( module Data.ByteString.Lazy
+) where
+
+import Data.ByteString.Lazy
diff --git a/Cronus/ByteString/Strict.hs b/Cronus/ByteString/Strict.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/ByteString/Strict.hs
@@ -0,0 +1,5 @@
+module Cronus.ByteString.Strict
+( module Data.ByteString
+) where
+
+import Data.ByteString
diff --git a/Cronus/Graph.hs b/Cronus/Graph.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Graph.hs
@@ -0,0 +1,5 @@
+module Cronus.Graph
+( module Data.Graph
+) where
+
+import Data.Graph
diff --git a/Cronus/HashMap/Lazy.hs b/Cronus/HashMap/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/HashMap/Lazy.hs
@@ -0,0 +1,5 @@
+module Cronus.HashMap.Lazy
+( module Data.HashMap.Lazy
+) where
+
+import Data.HashMap.Lazy
diff --git a/Cronus/HashMap/Strict.hs b/Cronus/HashMap/Strict.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/HashMap/Strict.hs
@@ -0,0 +1,5 @@
+module Cronus.HashMap.Strict
+( module Data.HashMap.Strict
+) where
+
+import Data.HashMap.Strict
diff --git a/Cronus/HashSet.hs b/Cronus/HashSet.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/HashSet.hs
@@ -0,0 +1,5 @@
+module Cronus.HashSet
+( module Data.HashSet
+) where
+
+import Data.HashSet
diff --git a/Cronus/IntMap/Lazy.hs b/Cronus/IntMap/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/IntMap/Lazy.hs
@@ -0,0 +1,5 @@
+module Cronus.IntMap.Lazy
+( module Data.IntMap.Lazy
+) where
+
+import Data.IntMap.Lazy
diff --git a/Cronus/IntMap/Strict.hs b/Cronus/IntMap/Strict.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/IntMap/Strict.hs
@@ -0,0 +1,5 @@
+module Cronus.IntMap.Strict
+( module Data.IntMap.Strict
+) where
+
+import Data.IntMap.Strict
diff --git a/Cronus/IntSet.hs b/Cronus/IntSet.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/IntSet.hs
@@ -0,0 +1,5 @@
+module Cronus.IntSet
+( module Data.IntSet
+) where
+
+import Data.IntSet
diff --git a/Cronus/Map/Lazy.hs b/Cronus/Map/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Map/Lazy.hs
@@ -0,0 +1,5 @@
+module Cronus.Map.Lazy
+( module Data.Map.Lazy
+) where
+
+import Data.Map.Lazy
diff --git a/Cronus/Map/Strict.hs b/Cronus/Map/Strict.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Map/Strict.hs
@@ -0,0 +1,5 @@
+module Cronus.Map.Strict
+( module Data.Map.Strict
+) where
+
+import Data.Map.Strict
diff --git a/Cronus/Sequence.hs b/Cronus/Sequence.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Sequence.hs
@@ -0,0 +1,5 @@
+module Cronus.Sequence
+( module Data.Sequence
+) where
+
+import Data.Sequence
diff --git a/Cronus/Set.hs b/Cronus/Set.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Set.hs
@@ -0,0 +1,5 @@
+module Cronus.Set
+( module Data.Set
+) where
+
+import Data.Set
diff --git a/Cronus/Text/Lazy.hs b/Cronus/Text/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Text/Lazy.hs
@@ -0,0 +1,5 @@
+module Cronus.Text.Lazy
+( module Data.Text.Lazy
+) where
+
+import Data.Text.Lazy
diff --git a/Cronus/Text/Strict.hs b/Cronus/Text/Strict.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Text/Strict.hs
@@ -0,0 +1,5 @@
+module Cronus.Text.Strict
+( module Data.Text
+) where
+
+import Data.Text
diff --git a/Cronus/Tree.hs b/Cronus/Tree.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Tree.hs
@@ -0,0 +1,5 @@
+module Cronus.Tree
+( module Data.Tree
+) where
+
+import Data.Tree
diff --git a/Cronus/Vector.hs b/Cronus/Vector.hs
new file mode 100644
--- /dev/null
+++ b/Cronus/Vector.hs
@@ -0,0 +1,5 @@
+module Cronus.Vector
+( module Data.Vector.Unboxed
+) where
+
+import Data.Vector.Unboxed
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,5 @@
+This software is provided free of charge, with the following stipulations:
+
+1. Don't blame me if it has problems, read the source code.
+2. Please read the source code before you use this code you found online.
+3. Have fun.
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/cronus.cabal b/cronus.cabal
new file mode 100644
--- /dev/null
+++ b/cronus.cabal
@@ -0,0 +1,57 @@
+cabal-version:       >=1.10
+
+name:                cronus
+version:             0.1.0.0
+synopsis:            Another bloated standard library
+description:         Another bloated standard library.
+license:             MIT
+license-file:        LICENSE
+author:              Samuel Schlesinger
+maintainer:          sgschlesinger@gmail.com
+copyright:           (c) 2020 Samuel Schlesinger
+category:            Prelude
+build-type:          Simple
+extra-source-files:  CHANGELOG.md
+tested-with: GHC ==8.8.1 || ==8.8.2 || ==8.8.3 || ==8.10.1
+
+source-repository head
+  type: git 
+  location: https://github.com/samuelschlesinger/cronus
+
+library
+  exposed-modules:
+    Cronus,
+    Cronus.Text.Strict,
+    Cronus.Text.Lazy,
+    Cronus.ByteString.Strict,
+    Cronus.ByteString.Lazy,
+    Cronus.HashMap.Lazy,
+    Cronus.HashMap.Strict,
+    Cronus.HashSet,
+    Cronus.Graph,
+    Cronus.IntMap.Strict,
+    Cronus.IntMap.Lazy,
+    Cronus.IntSet,
+    Cronus.Map.Lazy,
+    Cronus.Map.Strict,
+    Cronus.Sequence,
+    Cronus.Set,
+    Cronus.Tree,
+    Cronus.Vector
+  other-extensions:
+    NoImplicitPrelude
+  build-depends:
+    base >=4.10 && <5,
+    deepseq >=1.4 && <1.5,
+    text >=1.0 && <1.3,
+    bytestring >= 0.8,
+    containers >= 0.6 && <0.7,
+    unordered-containers >=0.2 && <0.3,
+    hashable >=1.0 && <1.4,
+    transformers >=0.5.6 && <0.5.7,
+    mtl >=2.2 && <2.3,
+    profunctors >=5.5 && <5.6,
+    vector >=0.10 && <0.13,
+    comonad >=5.0 && <5.1
+  default-language:
+    Haskell2010
