diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -64,6 +64,8 @@
         else pure [a]
 ```
 
+More examples can be found in `examples`.
+
 ## Generating the CDP library
 
 ```
@@ -75,13 +77,9 @@
 [Project board](https://github.com/users/arsalan0c/projects/1)
 
 Commands and events for all non-deprecated domains are supported.
-The following session functionalities are supported:
-- creating a session: obtain a session id by using the `pTargetAttachToTarget` function to send a `Target.attachToTarget` command, passing `True` for the flatten argument
-- send a command for a particular session: use the `sendCommandForSession` function with a session id
-- subscribe to events for a particular session: 
-  1. register a handler with a session id 
-  2. send the command to enable events for the domain, with the same session id
 
+Sessions can also be created with a target (such as a tab), which can be used to restrict the scope of commands and events for the target.
+See `examples/sessions.hs` for example usage.
 ## Contributing
 
 PRs are welcome! If you would like to discuss changes or have any feedback, feel free to open an [issue](https://github.com/arsalan0c/cdp-hs/issues).
diff --git a/cdp.cabal b/cdp.cabal
--- a/cdp.cabal
+++ b/cdp.cabal
@@ -1,14 +1,18 @@
-cabal-version: 2.2
+cabal-version: 3.0
 
 -- This file has been generated from package.yaml by hpack version 0.34.6.
 --
 -- see: https://github.com/sol/hpack
 
 name:           cdp
-version:        0.0.1.0
-synopsis:       A library for the Chrome Devtools Protocol (CDP)
-description:     Chrome Devtools Protocol: https://chromedevtools.github.io/devtools-protocol/
+version:        0.0.1.1
+synopsis:       A library for the Chrome Devtools Protocol
+description:     A library for the Chrome Devtools Protocol (CDP). It serves as an interface to Chrome, enabling tasks such as printing a page or opening a tab.
+                
+                Chrome Devtools Protocol: <https://chromedevtools.github.io/devtools-protocol/>
+                
                 README: <https://github.com/arsalan0c/cdp-hs>
+                
                 Examples: <https://github.com/arsalan0c/cdp-hs/examples> 
 category:       Package.Category
 homepage:       https://github.com/arsalan0c/cdp-hs#readme
@@ -83,23 +87,23 @@
       src
       gen
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , bytestring ==0.10.12.0
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , bytestring >=0.10.12 && <0.11
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 executable cdp-example-endpoints
@@ -111,27 +115,27 @@
   hs-source-dirs:
       examples
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , blaze-html
-    , blaze-markup
-    , bytestring ==0.10.12.0
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , blaze-html >=0.9.1 && <0.10
+    , blaze-markup >=0.8.2 && <0.9
+    , bytestring >=0.10.12 && <0.11
     , cdp
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , utf8-string
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , utf8-string >=1.0.2 && <1.1
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 executable cdp-example-open-twitter
@@ -143,24 +147,24 @@
   hs-source-dirs:
       examples
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , bytestring ==0.10.12.0
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , bytestring >=0.10.12 && <0.11
     , cdp
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 executable cdp-example-print-page
@@ -172,25 +176,25 @@
   hs-source-dirs:
       examples
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , base64-bytestring
-    , bytestring ==0.10.12.0
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , base64-bytestring >=1.1.0 && <1.2
+    , bytestring >=0.10.12 && <0.11
     , cdp
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 executable cdp-example-sessions
@@ -202,24 +206,24 @@
   hs-source-dirs:
       examples
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , bytestring ==0.10.12.0
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , bytestring >=0.10.12 && <0.11
     , cdp
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 executable cdp-example-subscribe
@@ -231,24 +235,24 @@
   hs-source-dirs:
       examples
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , bytestring ==0.10.12.0
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , bytestring >=0.10.12 && <0.11
     , cdp
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 executable cdp-gen
@@ -266,23 +270,23 @@
   default-extensions:
       Strict
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , bytestring ==0.10.12.0
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , bytestring >=0.10.12 && <0.11
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
 
 test-suite cdp-test
@@ -296,23 +300,23 @@
       test
   ghc-options: -Wall -threaded
   build-depends:
-      aeson ==1.5.6.0
-    , base ==4.14.3.0
-    , bytestring ==0.10.12.0
+      aeson >=1.5.6 && <1.6
+    , base >=4.14.3 && <4.15
+    , bytestring >=0.10.12 && <0.11
     , cdp
-    , containers ==0.6.5.1
-    , data-default ==0.7.1.1
-    , directory ==1.3.6.0
-    , extra ==1.7.9
-    , filepath ==1.4.2.1
+    , containers >=0.6.5 && <0.7
+    , data-default >=0.7.1 && <0.8
+    , directory >=1.3.6 && <1.4
+    , extra >=1.7.9 && <1.8
+    , filepath >=1.4.2 && <1.5
     , hspec
-    , http-conduit ==2.3.8
-    , monad-loops ==0.4.3
-    , mtl ==2.2.2
-    , network-uri ==2.6.4.1
-    , process ==1.6.13.2
-    , random ==1.2.0
-    , text ==1.2.4.1
-    , vector ==0.12.3.1
-    , websockets ==0.12.7.3
+    , http-conduit >=2.3.8 && <2.4
+    , monad-loops >=0.4.3 && <0.5
+    , mtl >=2.2.2 && <2.3
+    , network-uri >=2.6.4 && <2.7
+    , process >=1.6.13 && <1.7
+    , random >=1.2.0 && <1.3
+    , text >=1.2.4 && <1.3
+    , vector >=0.12.3 && <0.13
+    , websockets >=0.12.7 && <0.13
   default-language: Haskell2010
