diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -6,6 +6,12 @@
 and this project adheres to the
 [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
+## v0.6.4 — 2023-09-27
+
+This version improves the stucture of the project, in particular w.r.t dependencies:
+
+- Add custom snapshot and explicit lower bounds (see [#108](https://github.com/rzk-lang/rzk/pull/108))
+
 ## v0.6.3 — 2023-09-27
 
 This version contains a fix for the command line interface of `rzk`:
diff --git a/rzk.cabal b/rzk.cabal
--- a/rzk.cabal
+++ b/rzk.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           rzk
-version:        0.6.3
+version:        0.6.4
 synopsis:       An experimental proof assistant for synthetic ∞-categories
 description:    Please see the README on GitHub at <https://github.com/rzk-lang/rzk#readme>
 category:       Dependent Types
@@ -25,6 +25,11 @@
   type: git
   location: https://github.com/rzk-lang/rzk
 
+flag lsp
+  description: Build with LSP support.
+  manual: True
+  default: True
+
 library
   exposed-modules:
       Free.Scoped
@@ -45,26 +50,26 @@
       src
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
   build-tools:
-      alex
-    , happy
+      alex >=3.2.4
+    , happy >=1.19.9
   build-depends:
-      Glob
-    , aeson
-    , array
+      Glob >=0.9.3
+    , aeson >=1.4.2.0
+    , array >=0.5.3.0
     , base >=4.7 && <5
-    , bifunctors
-    , bytestring
-    , data-default-class
-    , filepath
-    , lens
-    , mtl
-    , optparse-generic
-    , stm
-    , template-haskell
-    , text
-    , yaml
+    , bifunctors >=5.5.3
+    , bytestring >=0.10.8.2
+    , data-default-class >=0.1.2.0
+    , filepath >=1.4.2.1
+    , lens >=4.17
+    , mtl >=2.2.2
+    , optparse-generic >=1.3.0
+    , stm >=2.5.0.0
+    , template-haskell >=2.14.0.0
+    , text >=1.2.3.1
+    , yaml >=0.11.0.0
   default-language: Haskell2010
-  if !impl(ghcjs)
+  if flag(lsp) && !impl(ghcjs)
     exposed-modules:
         Language.Rzk.VSCode.Env
         Language.Rzk.VSCode.Handlers
@@ -72,8 +77,8 @@
         Language.Rzk.VSCode.State
         Language.Rzk.VSCode.Tokenize
     build-depends:
-        lsp
-      , lsp-types
+        lsp >=2.1.0.0
+      , lsp-types >=2.0.1.0
 
 executable rzk
   main-is: Main.hs
@@ -83,29 +88,29 @@
       app
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
   build-tools:
-      alex
-    , happy
+      alex >=3.2.4
+    , happy >=1.19.9
   build-depends:
-      Glob
-    , aeson
-    , array
+      Glob >=0.9.3
+    , aeson >=1.4.2.0
+    , array >=0.5.3.0
     , base >=4.7 && <5
-    , bifunctors
-    , bytestring
-    , data-default-class
-    , filepath
-    , lens
-    , mtl
-    , optparse-generic
+    , bifunctors >=5.5.3
+    , bytestring >=0.10.8.2
+    , data-default-class >=0.1.2.0
+    , filepath >=1.4.2.1
+    , lens >=4.17
+    , mtl >=2.2.2
+    , optparse-generic >=1.3.0
     , rzk
-    , stm
-    , template-haskell
-    , text
-    , yaml
+    , stm >=2.5.0.0
+    , template-haskell >=2.14.0.0
+    , text >=1.2.3.1
+    , yaml >=0.11.0.0
   default-language: Haskell2010
-  if !impl(ghcjs)
+  if flag(lsp) && !impl(ghcjs)
     build-depends:
-        with-utf8
+        with-utf8 >=1.0.2.4
 
 test-suite doctests
   type: exitcode-stdio-1.0
@@ -114,26 +119,26 @@
       test
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
   build-tools:
-      alex
-    , happy
+      alex >=3.2.4
+    , happy >=1.19.9
   build-depends:
       Glob
     , QuickCheck
-    , aeson
-    , array
+    , aeson >=1.4.2.0
+    , array >=0.5.3.0
     , base
-    , bifunctors
-    , bytestring
-    , data-default-class
+    , bifunctors >=5.5.3
+    , bytestring >=0.10.8.2
+    , data-default-class >=0.1.2.0
     , doctest
-    , filepath
-    , lens
-    , mtl
-    , optparse-generic
-    , stm
+    , filepath >=1.4.2.1
+    , lens >=4.17
+    , mtl >=2.2.2
+    , optparse-generic >=1.3.0
+    , stm >=2.5.0.0
     , template-haskell
-    , text
-    , yaml
+    , text >=1.2.3.1
+    , yaml >=0.11.0.0
   default-language: Haskell2010
 
 test-suite rzk-test
@@ -145,23 +150,23 @@
       test
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
   build-tools:
-      alex
-    , happy
+      alex >=3.2.4
+    , happy >=1.19.9
   build-depends:
-      Glob
-    , aeson
-    , array
+      Glob >=0.9.3
+    , aeson >=1.4.2.0
+    , array >=0.5.3.0
     , base >=4.7 && <5
-    , bifunctors
-    , bytestring
-    , data-default-class
-    , filepath
-    , lens
-    , mtl
-    , optparse-generic
+    , bifunctors >=5.5.3
+    , bytestring >=0.10.8.2
+    , data-default-class >=0.1.2.0
+    , filepath >=1.4.2.1
+    , lens >=4.17
+    , mtl >=2.2.2
+    , optparse-generic >=1.3.0
     , rzk
-    , stm
-    , template-haskell
-    , text
-    , yaml
+    , stm >=2.5.0.0
+    , template-haskell >=2.14.0.0
+    , text >=1.2.3.1
+    , yaml >=0.11.0.0
   default-language: Haskell2010
