diff --git a/package.yaml b/package.yaml
index 5de395d906fa9843d7d605eaa08e1c1a83a9606b..687f783d5b080e5d10670c52340cc7877cb2cf4a 100644
--- a/package.yaml
+++ b/package.yaml
@@ -59,6 +59,9 @@ ghc-options:
 
 library:
   source-dirs: src
+  other-modules:
+  - Prelude
+  - BasePrelude
 
 executables:
   qbar:
diff --git a/src/BasePrelude.hs b/src/BasePrelude.hs
new file mode 100644
index 0000000000000000000000000000000000000000..0de4ba49536a43e02a979328518e613dc03e0652
--- /dev/null
+++ b/src/BasePrelude.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE PackageImports #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module BasePrelude
+  ( module Prelude,
+  )
+where
+
+import "base" Prelude
diff --git a/src/Prelude.hs b/src/Prelude.hs
new file mode 100644
index 0000000000000000000000000000000000000000..29aed664eef3b74b56fa9edc52d1d8a7b312754f
--- /dev/null
+++ b/src/Prelude.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Prelude
+  ( module BasePrelude,
+    head,
+    error,
+    errorWithoutStackTrace,
+    undefined,
+    Text.Text,
+    ByteString.ByteString,
+    trace,
+    traceId,
+    traceShow,
+    traceShowId,
+    Maybe.listToMaybe,
+  )
+where
+
+import BasePrelude hiding
+  ( error,
+    errorWithoutStackTrace,
+    head,
+    undefined,
+  )
+import qualified BasePrelude as P
+import qualified Data.ByteString as ByteString
+import qualified Data.Maybe as Maybe
+import qualified Data.Text.Lazy as Text
+import qualified Debug.Trace as Trace
+import qualified GHC.Stack.Types
+
+{-# DEPRECATED head "Partial Function." #-}
+head :: [a] -> a
+head = P.head
+
+{-# DEPRECATED error "Partial Function." #-}
+error :: GHC.Stack.Types.HasCallStack => String -> a
+error = P.error
+
+{-# DEPRECATED errorWithoutStackTrace "Partial Function." #-}
+errorWithoutStackTrace :: String -> a
+errorWithoutStackTrace = P.errorWithoutStackTrace
+
+{-# DEPRECATED undefined "Partial Function." #-}
+undefined :: GHC.Stack.Types.HasCallStack => a
+undefined = P.undefined
+
+{-# DEPRECATED trace "Partitial Function." #-}
+trace :: String -> a -> a
+trace = Trace.trace
+
+{-# DEPRECATED traceId "Partitial Function." #-}
+traceId :: String -> String
+traceId = Trace.traceId
+
+{-# DEPRECATED traceShow "Partitial Function." #-}
+traceShow :: Show a => a -> b -> b
+traceShow = Trace.traceShow
+
+{-# DEPRECATED traceShowId "Partitial Function." #-}
+traceShowId :: Show a => a -> a
+traceShowId = Trace.traceShowId