diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,3 +7,8 @@
 ## 0.1.0.1 -- 20121-05-28
 
 * Minor internal changes to relax bounds on bytestring. Enables building with ghc-8.10.2. 
+
+## 0.1.1.0 -- 20121-06-05
+
+* FileTree is now a record.
+* Some internal changes to get it to build on somewhat older versions of ghc. Tested with 8.2.2 
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -2,6 +2,7 @@
 
 import qualified Talash.Brick as B
 import qualified Talash.Piped as P
+import Intro
 import System.Environment (getArgs)
 
 run :: [String] -> IO ()
@@ -9,7 +10,7 @@
 run ("tui"  :xs) = B.run' xs
 run  _           = putStrLn usageString
 
-usageString :: String
+usageString :: Text
 usageString =    "talash is the demo program for the talash library. It has two set of subcommand:\n"
               <> "talash tui : for the terminal user interface, use 'talash tui help' for details.\n"
               <> "talash piped : for the piped interface, use 'talash piped help' for details.\n"
diff --git a/src/Talash/Core.hs b/src/Talash/Core.hs
--- a/src/Talash/Core.hs
+++ b/src/Talash/Core.hs
@@ -27,6 +27,7 @@
 import qualified Data.Vector.Unboxed.Mutable as M
 import qualified Data.Vector.Unboxed.Sized as S
 import GHC.TypeNats
+import Prelude (fromIntegral)
 import Intro
 import Lens.Micro (_1 , _2 , (^.))
 
@@ -131,7 +132,7 @@
                     -> Maybe (Matcher a) -- ^ Nothing if the string is empty or if the number of needles turns out to be non-positive
 makeMatcher c lenf matf t
   | T.null t || lenf t <= 0                                    = Nothing
-  | SomeNat p <- someNatVal . fromIntegralUnsafe . lenf $ t    = Just . Matcher . matf p c $ t
+  | SomeNat p <- someNatVal . fromIntegral. lenf $ t    = Just . Matcher . matf p c $ t
 
 {-# INLINE withSensitivity #-}
 withSensitivity :: CaseSensitivity -> Text -> Text
diff --git a/src/Talash/Files.hs b/src/Talash/Files.hs
--- a/src/Talash/Files.hs
+++ b/src/Talash/Files.hs
@@ -36,9 +36,9 @@
                     -- | The list of directories to which this configuration should apply.
                     dirsLocal :: [ByteString]}
 
-data FileTree a = Dir !a -- ^ The root directory
-                      !(V.Vector a) -- ^ The files in the root directory that are not subdirectories
-                      !(V.Vector (FileTree a)) -- ^ The vector of trees formed by subdirectories
+data FileTree a = Dir { rootDir :: a -- ^ The root directory
+                      , dirFiles :: (V.Vector a) -- ^ The files in the root directory that are not subdirectories
+                      , subDirs :: (V.Vector (FileTree a))} -- ^ The vector of trees formed by subdirectories
                         deriving (Eq , Show)
 
 -- | Default configuration, include every file and search directory.
@@ -116,6 +116,7 @@
 {-# INLINABLE findFilesInDirs #-}
 findFilesInDirs :: [FindInDirs] -> IO (V.Vector (FileTree Text))
 findFilesInDirs = foldr (\a t -> t <> findWithExts a) (pure mempty)
+
 -- | Find all the executables in PATH
 executables :: IO (V.Vector Text)
 executables = foldr (\a t -> t <> map (V.map (T.takeWhileEnd (/= '/')) . flatten) (fileTreeWith cl a)) (pure V.empty) . B.split ':' =<< getEnvDefault "PATH" ""
diff --git a/talash.cabal b/talash.cabal
--- a/talash.cabal
+++ b/talash.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               talash
-version:            0.1.0.1
+version:            0.1.1.0
 
 -- A short (one-line) description of the package.
 synopsis: Line oriented fast enough text search
@@ -64,21 +64,21 @@
     other-modules: Talash.Internal Talash.Brick.Internal
     default-extensions: DeriveGeneric OverloadedStrings NoImplicitPrelude BangPatterns TupleSections ScopedTypeVariables DeriveFunctor DataKinds KindSignatures
     other-extensions: TemplateHaskell ExistentialQuantification RankNTypes
-    build-depends:base                    >=  4.14.1 && < 5,
+    build-depends:base                    >=  4.10.1 && < 5,
                   alfred-margaret         ^>= 1.1.1.0,
                   brick                   >=  0.60 && < 0.70,
                   bytestring              >=  0.10.10 && < 0.11,
                   colorful-monoids        >=  0.2.1 && < 0.3,
                   ghc-compact             >=  0.1.0 && < 0.3,
-                  containers              >=  0.6.2 && < 0.7,
+                  containers              >=  0.6   && < 0.7,
                   directory               >=  1.3.6 && < 1.4,
-                  intro                   ^>= 0.9.0.0,
+                  intro                   >=  0.4.0 && < 0.10,
                   microlens               ^>= 0.4.12.0,
                   microlens-th            ^>= 0.4.3.9,
                   text                    ^>= 1.2.4.1,
                   unix                    >=  2.7.2 && < 2.8,
                   unordered-containers    >=  0.2.13 && < 0.3,
-                  vector                  ^>= 0.12.3.0,
+                  vector                  ^>= 0.12.1,
                   vector-algorithms       ^>= 0.8.0.4,
                   vector-sized            >=  1.4.3 && < 1.5,
                   vty                     ^>= 5.33
@@ -89,11 +89,12 @@
 
 executable talash
     main-is:          Main.hs
-
+    default-extensions: OverloadedStrings NoImplicitPrelude
     -- Modules included in this executable, other than Main.
     -- other-modules:
     build-depends:
-        base                    >= 4.14.1 && < 5,
+        base                    >= 4.10.1 && < 5,
+        intro                   >=  0.4.0 && < 0.10,
         talash
 
     ghc-options: -threaded -rtsopts
