diff --git a/dhscanner-ast.cabal b/dhscanner-ast.cabal
--- a/dhscanner-ast.cabal
+++ b/dhscanner-ast.cabal
@@ -22,7 +22,7 @@
     and models both of them as plain sequential code blocks. Every file has exactly one ast that represents it.
     Non Haskell parogrammers note: The ast is /immutable/ (like everything else in Haskell ...)
 
-version:            0.1.0.0
+version:            0.1.0.1
 license:            GPL-3.0-only
 license-file:       LICENSE
 author:             OrenGitHub
@@ -42,13 +42,14 @@
 
     exposed-modules:
         Ast,
+        Asts,
         Token,
         Location
 
     build-depends:
-        aeson,
-        base < 4.19,
-        containers < 0.7
+        aeson >= 2.2.3 && < 2.3,
+        base >= 4.17.2 && < 4.18,
+        containers >= 0.6.7 && < 0.7
 
     hs-source-dirs:
         src
diff --git a/src/Asts.hs b/src/Asts.hs
new file mode 100644
--- /dev/null
+++ b/src/Asts.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Asts
+
+where
+
+import Data.Aeson
+import GHC.Generics
+
+-- project imports
+import qualified Ast
+
+data Asts
+   = Asts
+     {
+         asts :: [ Ast.Root ]
+     }
+     deriving ( Show, Eq, Generic, ToJSON, FromJSON )
+
