diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.2.0 (Dec 2023)
+
+* Support streamly-0.10.0 and streamly-core-0.2.0
+
 ## 0.1.3 (Mar 2023)
 
 * Support streamly-0.9.0 and streamly-core-0.1.0
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -43,77 +43,74 @@
 
 ### General
 
-* [Intro](examples/Intro.hs): Simple, introductory examples - loops, text
+* [Intro](https://github.com/composewell/streamly-examples/blob/master/examples/Intro.hs): Simple, introductory examples - loops, text
   processing, networking, concurrency.
-* [MergeSort](examples/MergeSort.hs): Sort a stream concurrently using merge
+* [MergeSort](https://github.com/composewell/streamly-examples/blob/master/examples/MergeSort.hs): Sort a stream concurrently using merge
   sort.
-* [Rate](examples/Rate.hs): Run an action at a given rate.
+* [Rate](https://github.com/composewell/streamly-examples/blob/master/examples/Rate.hs): Run an action at a given rate.
 
 ### FileSystem
 
-* [CoreUtils](examples/CoreUtils.hs): Implement simplified coreutils
+* [CoreUtils](https://github.com/composewell/streamly-examples/blob/master/examples/CoreUtils.hs): Implement simplified coreutils
   like `cat`, `cp`, `tee`, `grep` using `Streamly.FileSystem.File` API.
-* [CoreUtilsHandle](examples/CoreUtilsHandle.hs): Implement simplified
+* [CoreUtilsHandle](https://github.com/composewell/streamly-examples/blob/master/examples/CoreUtilsHandle.hs): Implement simplified
   coreutils using `Streamly.FileSystem.Handle` API.
-* [Split](examples/Split.hs): Implement file splitting utility `split`.
-* [FileSystemEvent](examples/FileSystemEvent.hs): File watching/fsnotify API
+* [Split](https://github.com/composewell/streamly-examples/blob/master/examples/Split.hs): Implement file splitting utility `split`.
+* [FileSystemEvent](https://github.com/composewell/streamly-examples/blob/master/examples/FileSystemEvent.hs): File watching/fsnotify API
   example.
-* [ListDir](examples/ListDir.hs): List a directory tree recursively and
+* [ListDir](https://github.com/composewell/streamly-examples/blob/master/examples/ListDir.hs): List a directory tree recursively and
   concurrently.
 
 ### Text Processing
 
-* [CamelCase](examples/CamelCase.hs): Convert a file to camel case.
-* [WordCount](examples/WordCount.hs): Simple word counting (`wc`) program.
-* [WordCount.c](examples/WordCount.c): C equivalent for perf comparison.
-* [WordCountModular](examples/WordCountModular.hs): Modular version.
-* [WordCountParallel](examples/WordCountParallel.hs): Concurrent version.
-* [WordCountParallelUTF8](examples/WordCountParallelUTF8.hs): Concurrent 
+* [CamelCase](https://github.com/composewell/streamly-examples/blob/master/examples/CamelCase.hs): Convert a file to camel case.
+* [WordCount](https://github.com/composewell/streamly-examples/blob/master/examples/WordCount.hs): Simple word counting (`wc`) program.
+* [WordCount.c](https://github.com/composewell/streamly-examples/blob/master/examples/WordCount.c): C equivalent for perf comparison.
+* [WordCountModular](https://github.com/composewell/streamly-examples/blob/master/examples/WordCountModular.hs): Modular version.
+* [WordCountParallel](https://github.com/composewell/streamly-examples/blob/master/examples/WordCountParallel.hs): Concurrent version.
+* [WordCountParallelUTF8](https://github.com/composewell/streamly-examples/blob/master/examples/WordCountParallelUTF8.hs): Concurrent
   version with full UTF8 handling.
-* [WordFrequency](examples/WordFrequency.hs): Count word frequency in
+* [WordFrequency](https://github.com/composewell/streamly-examples/blob/master/examples/WordFrequency.hs): Count word frequency in
   a file and print top 25 words.
-* [CSVParser](examples/CSVParser.hs): Process a CSV file
+* [CSVParser](https://github.com/composewell/streamly-examples/blob/master/examples/CSVParser.hs): Process a CSV file
+* [DateTimeParser](https://github.com/composewell/streamly-examples/blob/master/examples/DateTimeParser.hs): Parse a Date/Time string.
+* [LogParser](https://github.com/composewell/streamly-examples/blob/master/examples/LogParser.hs): Parse a quoted string with escaping.
 
 ### Networking
 
-* [EchoServer](examples/EchoServer.hs): A concurrent TCP server that
+* [EchoServer](https://github.com/composewell/streamly-examples/blob/master/examples/EchoServer.hs): A concurrent TCP server that
   echoes everything that it receives.
-* [MergeServer](examples/MergeServer.hs): Merges lines received from
+* [MergeServer](https://github.com/composewell/streamly-examples/blob/master/examples/MergeServer.hs): Merges lines received from
   several client connections and writes them to a file.
-* [FileSender](examples/FileSender.hs): Send many files concurrently to
+* [FileSender](https://github.com/composewell/streamly-examples/blob/master/examples/FileSender.hs): Send many files concurrently to
   a server over multiple connections. Can be used to test `MergeServer`.
-* [CmdServer](examples/CmdServer.hs): Receive a stream of commands from many
+* [CmdServer](https://github.com/composewell/streamly-examples/blob/master/examples/CmdServer.hs): Receive a stream of commands from many
   clients and respond to them using command handlers.
-* [CmdClient](examples/CmdClient.hs): Run multiple concurrent clients sending
+* [CmdClient](https://github.com/composewell/streamly-examples/blob/master/examples/CmdClient.hs): Run multiple concurrent clients sending
   streams of commands to a server and receiving responses. Can be used to test
   `CmdServer`.
-* [WordServer](examples/WordServer.hs): A word look up (dictionary)
+* [WordServer](https://github.com/composewell/streamly-examples/blob/master/examples/WordServer.hs): A word look up (dictionary)
   server, instead of performing a real DB query the server just adds a
   time delay to simulate the IO.
 
 ### FRP/Games/Animation
 
-* [AcidRain](examples/AcidRain.hs): A console game with deteriorating health
+* [AcidRain](https://github.com/composewell/streamly-examples/blob/master/examples/AcidRain.hs): A console game with deteriorating health
   that can be modified by typing "harm" and "potion" commands.
-* [CirclingSquare](examples/CirclingSquare.hs): Use SDL2 to display a
+* [CirclingSquare](https://github.com/composewell/streamly-examples/blob/master/examples/CirclingSquare.hs): Use SDL2 to display a
   square that moves in a circle, and follows the mouse pointer.
 
-### Monad Transformers
-
-* [ControlFlow](examples/ControlFlow.hs): Combining control flow manipulating
-  transformers (`MaybeT`, `ExceptT`, `ContT`) with streamly.
-
 ### Interoperation
 
-* [Interop.Streaming](examples/Interop/Streaming.hs): Converting streamly
+* [Interop.Streaming](https://github.com/composewell/streamly-examples/blob/master/examples/Interop/Streaming.hs): Converting streamly
   stream type to and from `streaming` stream type.
-* [Interop.Pipes](examples/Interop/Pipes.hs): Converting streamly
+* [Interop.Pipes](https://github.com/composewell/streamly-examples/blob/master/examples/Interop/Pipes.hs): Converting streamly
   stream type to and from `pipes` stream type.
-* [Interop.Conduit](examples/Interop/Conduit.hs): Converting streamly
+* [Interop.Conduit](https://github.com/composewell/streamly-examples/blob/master/examples/Interop/Conduit.hs): Converting streamly
   stream type to and from `conduit` stream type.
-* [Interop.Vector](examples/Interop/Vector.hs): Converting streamly
+* [Interop.Vector](https://github.com/composewell/streamly-examples/blob/master/examples/Interop/Vector.hs): Converting streamly
   stream type to and from `vector` stream type.
 
 ## Licensing
 
-Available under [Apache-2.0 license](LICENSE).
+Available under [Apache-2.0 license](https://github.com/composewell/streamly-examples/blob/master/LICENSE).
diff --git a/examples/CSVParser.hs b/examples/CSVParser.hs
--- a/examples/CSVParser.hs
+++ b/examples/CSVParser.hs
@@ -13,15 +13,14 @@
 import qualified Streamly.Data.Stream as Stream
 import qualified Streamly.FileSystem.Handle as Handle
 import qualified System.IO as IO
-import qualified Streamly.Internal.Data.Stream as Stream (splitOn)
-import qualified Streamly.Internal.Data.Stream.Chunked as ArrayStream (splitOn)
+import qualified Streamly.Internal.Data.Array.Stream as ArrayStream (splitOn)
 
 main :: IO ()
 main = do
     inFile <- fmap head getArgs
     src <- IO.openFile inFile ReadMode
 
-    Stream.unfold Handle.chunkReader src         -- Stream IO (Array Word8)
+    Handle.readChunks src                        -- Stream IO (Array Word8)
         & ArrayStream.splitOn 10                 -- Stream IO (Array Word8)
         & Stream.fold (Fold.drainMapM parseLine) -- IO ()
 
@@ -30,7 +29,7 @@
     printList = putStr . map (chr . fromIntegral)
 
     parseLine arr =
-        (Stream.unfold Array.reader arr :: Stream IO Word8)
+        (Array.read arr :: Stream IO Word8)
             & Stream.splitOn (== 44) Fold.toList     -- Stream IO [Word8]
             & Stream.intersperse [32]                -- Stream IO [Word8]
             & Stream.fold (Fold.drainMapM printList) -- IO ()
diff --git a/examples/CamelCase.hs b/examples/CamelCase.hs
--- a/examples/CamelCase.hs
+++ b/examples/CamelCase.hs
@@ -13,10 +13,10 @@
 -- | @camelCase source-file dest-file@
 camelCase :: Handle -> Handle -> IO ()
 camelCase src dst =
-      Stream.unfold Handle.reader src    -- Stream IO Word8
-    & Stream.postscan fold               -- Stream IO (Bool, Maybe Word8)
-    & Stream.mapMaybe snd                -- Stream IO Word8
-    & Stream.fold (Handle.write dst)     -- IO ()
+      Handle.read src                 -- Stream IO Word8
+    & Stream.postscan fold            -- Stream IO (Bool, Maybe Word8)
+    & Stream.mapMaybe snd             -- Stream IO Word8
+    & Stream.fold (Handle.write dst)  -- IO ()
 
     where
 
diff --git a/examples/CmdServer.hs b/examples/CmdServer.hs
--- a/examples/CmdServer.hs
+++ b/examples/CmdServer.hs
@@ -75,13 +75,13 @@
 
 handler :: Socket -> IO ()
 handler sk =
-      Stream.unfold Socket.reader sk     -- Stream IO Word8
-    & Unicode.decodeLatin1               -- Stream IO Char
-    & Stream.parseMany word              -- Stream IO String
+      Socket.read sk        -- Stream IO Word8
+    & Unicode.decodeLatin1  -- Stream IO Char
+    & Stream.parseMany word -- Stream IO String
     & Stream.catRights
-    & fmap (, sk)                        -- Stream IO (String, Socket)
-    & Stream.fold demux                  -- IO () + Exceptions
-    & discard                            -- IO ()
+    & fmap (, sk)           -- Stream IO (String, Socket)
+    & Stream.fold demux     -- IO () + Exceptions
+    & discard               -- IO ()
 
     where
 
@@ -94,7 +94,7 @@
 
 server :: IO ()
 server =
-      Stream.unfold TCP.acceptorOnPort 8091          -- Stream IO Socket
+      TCP.accept 8091                                -- Stream IO Socket
     & Stream.parMapM id (Socket.forSocketM handler)  -- Stream IO ()
     & Stream.fold Fold.drain                         -- IO ()
 
diff --git a/examples/ControlFlow.hs b/examples/ControlFlow.hs
--- a/examples/ControlFlow.hs
+++ b/examples/ControlFlow.hs
@@ -27,7 +27,7 @@
 import Control.Monad.Trans.Except (ExceptT, runExceptT, throwE, catchE)
 import Control.Monad.Trans.Cont (ContT(..), callCC)
 import Streamly.Data.Stream (Stream)
-import Streamly.Internal.Data.Stream.StreamD (CrossStream, mkCross, unCross)
+import Streamly.Internal.Data.Stream (CrossStream, mkCross, unCross)
 
 import qualified Streamly.Data.Fold as Fold
 import qualified Streamly.Data.Stream as Stream
diff --git a/examples/CoreUtils.hs b/examples/CoreUtils.hs
--- a/examples/CoreUtils.hs
+++ b/examples/CoreUtils.hs
@@ -38,7 +38,7 @@
 append :: IO ()
 append =
       File.readChunks "input.txt"      -- Stream IO (Array Word8)
-    & File.appendChunks "output.txt"   -- IO ()
+    & File.writeAppendChunks "output.txt"   -- IO ()
 
 -- | > cat input.txt | tee output1.txt > output.txt
 tap :: IO ()
@@ -51,7 +51,7 @@
 -- output1.txt is processed/written to in a separate thread.
 tapAsync :: IO ()
 tapAsync =
-      Stream.unfold Stdio.readChunks ()   -- Stream IO (Array Word8)
+      Stdio.readChunks ()   -- Stream IO (Array Word8)
     & Stream.tapAsyncK
           (File.fromChunks "output1.txt") -- Stream IO (Array Word8)
     & File.fromChunks "output.txt"        -- IO ()
diff --git a/examples/CoreUtilsHandle.hs b/examples/CoreUtilsHandle.hs
--- a/examples/CoreUtilsHandle.hs
+++ b/examples/CoreUtilsHandle.hs
@@ -10,7 +10,7 @@
 import qualified Streamly.FileSystem.Handle as Handle
 import qualified Streamly.Unicode.Stream as Unicode
 
-import qualified Streamly.Internal.Data.Stream.Chunked as ArrayStream (splitOn)
+import qualified Streamly.Internal.Data.Array.Stream as ArrayStream (splitOn)
 
 -- | Read the contents of a file to stdout.
 --
@@ -20,20 +20,20 @@
 --
 catBytes :: Handle -> IO ()
 catBytes src =
-      Stream.unfold Handle.reader src     -- Stream IO Word8
+      Handle.read src     -- Stream IO Word8
     & Stream.fold (Handle.write stdout)   -- IO ()
 
 -- | Chunked version, more efficient than the byte stream version above. Reads
 -- the file in 256KB chunks and writes those chunks to stdout.
 cat :: Handle -> IO ()
 cat src =
-      Stream.unfold Handle.chunkReaderWith (256*1024, src) -- Stream IO (Array Word8)
+      Handle.readChunksWith (256*1024) src    -- Stream IO (Array Word8)
     & Stream.fold (Handle.writeChunks stdout) -- IO ()
 
 -- | Read from standard input write to standard output
 echo :: IO ()
 echo =
-      Stream.unfold Handle.chunkReader stdin   -- Stream IO (Array Word8)
+      Handle.readChunks stdin   -- Stream IO (Array Word8)
     & Stream.fold (Handle.writeChunks stdout)  -- IO ()
 
 -- | Copy a source file to a destination file.
@@ -43,7 +43,7 @@
 -- 32KB and writes those chunks to the destination file.
 cpBytes :: Handle -> Handle -> IO ()
 cpBytes src dst =
-      Stream.unfold Handle.reader src  -- Stream IO Word8
+      Handle.read src  -- Stream IO Word8
     & Stream.fold (Handle.write dst)   -- IO ()
 
 -- | Chunked version, more efficient than the byte stream version above. Reads
@@ -51,7 +51,7 @@
 cp :: Handle -> Handle -> IO ()
 cp src dst =
       Stream.fold (Handle.writeChunks dst)
-    $ Stream.unfold Handle.chunkReaderWith (256*1024, src)
+    $ Handle.readChunksWith (256*1024) src
 
 -- | Count lines like wc -l.
 --
@@ -59,9 +59,9 @@
 -- and counts the lines..
 wclChar :: Handle -> IO Int
 wclChar src =
-      Stream.unfold Handle.reader src           -- Stream IO Word8
-    & Unicode.decodeLatin1                      -- Stream IO Char
-    & split (== '\n') Fold.drain                -- Stream IO ()
+      Handle.read src            -- Stream IO Word8
+    & Unicode.decodeLatin1       -- Stream IO Char
+    & split (== '\n') Fold.drain -- Stream IO ()
     & Stream.fold Fold.length
 
     where
@@ -73,9 +73,9 @@
 -- first.
 wcl :: Handle -> IO Int
 wcl src =
-      Stream.unfold Handle.chunkReader src -- Stream IO (Array Word8)
-    & ArrayStream.splitOn 10               -- Stream IO (Array Word8)
-    & Stream.fold Fold.length              -- IO ()
+      Handle.readChunks src   -- Stream IO (Array Word8)
+    & ArrayStream.splitOn 10  -- Stream IO (Array Word8)
+    & Stream.fold Fold.length -- IO ()
 
 main :: IO ()
 main = do
diff --git a/examples/DateTimeParser.hs b/examples/DateTimeParser.hs
--- a/examples/DateTimeParser.hs
+++ b/examples/DateTimeParser.hs
@@ -47,7 +47,7 @@
 {-# INLINE foldDateTime #-}
 foldDateTime :: Array Char -> IO (Int, Int)
 foldDateTime arr =
-    Stream.fold t $ Stream.unfold Array.reader arr
+    Stream.fold t $ Array.read arr
 
     where
 
@@ -121,7 +121,7 @@
             <*  char ':'
             <*> decimal 2  -- sec
             <*  char 'Z'
-    in Stream.fold t $ Stream.unfold Array.reader arr
+    in Stream.fold t $ Array.read arr
 
 -------------------------------------------------------------------------------
 -- Using foldBreak - slower than applicative
@@ -130,7 +130,7 @@
 {-# INLINE _foldBreakDateTime #-}
 _foldBreakDateTime :: Array Char -> IO Int
 _foldBreakDateTime arr = do
-    let s = Stream.unfold Array.reader arr
+    let s = Array.read arr
     (year, s1) <- Stream.foldBreak (decimal 4) s
     (_, s2) <- Stream.foldBreak (char '-') s1
     (month, s3) <- Stream.foldBreak (decimal 2) s2
@@ -153,7 +153,7 @@
 _parseBreakDateTime :: Array Char -> IO Int
 _parseBreakDateTime arr = do
     let s = StreamK.fromStream $ Stream.fromPure arr
-        p = ParserK.fromParser . Parser.fromFold
+        p = ParserK.adaptC . Parser.fromFold
     (Right year, s1) <- StreamK.parseBreakChunks (p $ decimal 4) s
     (_, s2) <- StreamK.parseBreakChunks (p $ char '-') s1
     (Right month, s3) <- StreamK.parseBreakChunks (p $ decimal 2) s2
@@ -180,7 +180,7 @@
 
     where
 
-    p = ParserK.fromParser
+    p = ParserK.adaptC
 
     dateParser = do
         year <- p $ Parser.decimal <* Parser.char '-'
@@ -196,7 +196,7 @@
 {-# NOINLINE _parseDateTime #-}
 _parseDateTime :: Array Char -> IO Int
 _parseDateTime arr = do
-    r <- Stream.parse dateParser $ Stream.unfold Array.reader arr
+    r <- Stream.parse dateParser $ Array.read arr
     return $ fromRight (error "failed") r
 
     where
diff --git a/examples/EchoServer.hs b/examples/EchoServer.hs
--- a/examples/EchoServer.hs
+++ b/examples/EchoServer.hs
@@ -12,7 +12,7 @@
 
 main :: IO ()
 main =
-      Stream.unfold TCP.acceptorOnPort 8091 -- Stream IO Socket
+      TCP.accept 8091                       -- Stream IO Socket
     & Stream.parMapM id (handleWithM echo)  -- Stream IO ()
     & Stream.fold Fold.drain                -- IO ()
 
@@ -20,8 +20,8 @@
 
     echo :: Socket -> IO ()
     echo sk =
-          Stream.unfold Socket.chunkReaderWith (32768, sk) -- Stream IO (Array Word8)
-        & Stream.fold (Socket.writeChunks sk)              -- IO ()
+          Socket.readChunksWith 32768 sk      -- Stream IO (Array Word8)
+        & Stream.fold (Socket.writeChunks sk) -- IO ()
 
     handleWithM :: (Socket -> IO ()) -> Socket -> IO ()
     handleWithM f sk = finally (f sk) (Net.close sk)
diff --git a/examples/FileSender.hs b/examples/FileSender.hs
--- a/examples/FileSender.hs
+++ b/examples/FileSender.hs
@@ -30,7 +30,7 @@
 
     fileToSocket :: Handle -> Socket -> IO ()
     fileToSocket fh sk =
-          Stream.unfold Handle.chunkReader fh  -- Stream IO (Array Word8)
+          Handle.readChunks fh  -- Stream IO (Array Word8)
         & Stream.fold (Socket.writeChunks sk)  -- IO ()
 
     sendFile :: String -> IO ()
diff --git a/examples/Intro.hs b/examples/Intro.hs
--- a/examples/Intro.hs
+++ b/examples/Intro.hs
@@ -21,9 +21,6 @@
 import qualified Streamly.FileSystem.File as File
 import qualified Streamly.Unicode.Stream as Unicode
 
-import qualified Streamly.Internal.Data.Stream as Stream (wordsBy)
-import qualified Streamly.Internal.Data.Unfold as Unfold (enumerateFromToIntegral)
-
 -------------------------------------------------------------------------------
 -- Simple loops
 -------------------------------------------------------------------------------
@@ -31,7 +28,7 @@
 -- | Sum a list of Int
 sumInt :: Identity Int
 sumInt =
-      Stream.unfold Unfold.fromList [1..10] -- Stream Identity Int
+      Stream.fromList [1..10] -- Stream Identity Int
     & Stream.fold Fold.sum                  -- Identity Int
 
 -- | Sum a list of Int
@@ -56,8 +53,8 @@
         xmult :: Unfold Identity ((Int, Int), (Int, Int)) Int
         xmult =
             Unfold.crossWith (*)
-                  (Unfold.lmap fst Unfold.enumerateFromToIntegral)
-                  (Unfold.lmap snd Unfold.enumerateFromToIntegral)
+                  (Unfold.lmap fst Unfold.enumerateFromTo)
+                  (Unfold.lmap snd Unfold.enumerateFromTo)
 
      in Stream.unfold xmult (range1,range2) -- Stream Identity Int
             & Stream.fold Fold.sum          -- Identity Int
diff --git a/examples/MergeServer.hs b/examples/MergeServer.hs
--- a/examples/MergeServer.hs
+++ b/examples/MergeServer.hs
@@ -17,9 +17,9 @@
 -- a limit to the buffering for safety.
 readLines :: Socket -> Stream IO (Array Char)
 readLines sk =
-    Stream.unfold Socket.reader sk               -- Stream IO Word8
-  & Unicode.decodeLatin1                         -- Stream IO Char
-  & split (== '\n') Array.write                  -- Stream IO String
+    Socket.read sk              -- Stream IO Word8
+  & Unicode.decodeLatin1        -- Stream IO Char
+  & split (== '\n') Array.write -- Stream IO String
 
   where
 
@@ -34,7 +34,7 @@
 -- streams at line boundaries and writes the merged stream to a file.
 server :: Handle -> IO ()
 server file =
-      Stream.unfold TCP.acceptorOnPort 8090         -- Stream IO Socket
+      TCP.accept 8090                               -- Stream IO Socket
     & Stream.parConcatMap (Stream.eager True) recv  -- Stream IO (Array Char)
     & Stream.unfoldMany Array.reader                -- Stream IO Char
     & Unicode.encodeLatin1                          -- Stream IO Word8
diff --git a/examples/MergeSort.hs b/examples/MergeSort.hs
--- a/examples/MergeSort.hs
+++ b/examples/MergeSort.hs
@@ -28,7 +28,7 @@
     K.toStream
         . K.sortBy compare
         . K.fromStream
-        . Stream.unfold Array.reader
+        . Array.read
 
 sortChunk :: Array Int -> IO (Array Int)
 sortChunk = Stream.fold Array.write . streamChunk
@@ -63,8 +63,7 @@
         & Stream.chunksOf chunkSize
         & f sortChunk
         & K.fromStream
-        & K.mergeMapWith
-            (K.mergeBy compare) (K.fromStream . Stream.unfold Array.reader)
+        & K.mergeMapWith (K.mergeBy compare) (K.fromStream . Array.read)
         & K.toStream
         & Stream.fold Fold.drain
 
@@ -77,8 +76,8 @@
 reduce arr1 arr2 =
     Stream.mergeBy
         compare
-        (Stream.unfold Array.reader arr1)
-        (Stream.unfold Array.reader arr2)
+        (Array.read arr1)
+        (Array.read arr2)
         & Stream.fold Array.write
 
 sortMergeChunks ::
diff --git a/examples/Split.hs b/examples/Split.hs
--- a/examples/Split.hs
+++ b/examples/Split.hs
@@ -29,7 +29,7 @@
 -- of directory names.
 splitFile :: Handle -> IO ()
 splitFile inHandle =
-      (Stream.unfold Handle.reader inHandle :: Stream IO Word8) -- Stream IO Word8
+      (Handle.read inHandle :: Stream IO Word8) -- Stream IO Word8
     & Stream.liftInner                   -- Stream (StateT (Maybe (Handle, Int)) IO) Word8
     -- Stream (StateT (Maybe (Handle, Int)) IO) ()
     & Stream.refoldMany (Refold.take (180 * mb) Handle.writer) newHandle
diff --git a/examples/WordCountParallel.hs b/examples/WordCountParallel.hs
--- a/examples/WordCountParallel.hs
+++ b/examples/WordCountParallel.hs
@@ -19,8 +19,8 @@
 -- Get the line, word, char counts in one chunk.
 countArray :: Array Word8 -> IO Counts
 countArray arr =
-      Stream.unfold Array.reader arr          -- Stream IO Word8
-    & Stream.decodeLatin1                     -- Stream IO Char
+      Array.read arr          -- Stream IO Word8
+    & Stream.decodeLatin1     -- Stream IO Char
     & Stream.fold (Fold.foldl' count (Counts 0 0 0 True)) -- IO Counts
 
 -- When combining the counts in two contiguous chunks, we would also need to
diff --git a/examples/WordCountParallelUTF8.hs b/examples/WordCountParallelUTF8.hs
--- a/examples/WordCountParallelUTF8.hs
+++ b/examples/WordCountParallelUTF8.hs
@@ -49,10 +49,7 @@
 import qualified Streamly.Internal.Unicode.Stream as Unicode
        (DecodeState, DecodeError(..), CodePoint, decodeUtf8Either
        , resumeDecodeUtf8Either)
-import qualified Streamly.Internal.Data.Array.Mut.Type as MArray
-       (getIndexUnsafe, putIndexUnsafe, modifyIndexUnsafe)
 
-
 -------------------------------------------------------------------------------
 -- Parallel char, line and word counting
 -------------------------------------------------------------------------------
@@ -195,7 +192,7 @@
 
 newCounts :: IO (MutArray Int)
 newCounts = do
-    counts <- MArray.newPinned (fromEnum (maxBound :: Field) + 1)
+    counts <- MArray.pinnedNew (fromEnum (maxBound :: Field) + 1)
     writeField counts LineCount 0
     writeField counts WordCount 0
     writeField counts CharCount 0
@@ -566,7 +563,7 @@
     counts <- newCounts
     Stream.fold (Fold.drainMapM (countChar counts))
         $ Unicode.decodeUtf8Either
-        $ Stream.unfold Array.reader src
+        $ Array.read src
     return counts
 
 {-# INLINE wcMwlParallel #-}
@@ -578,7 +575,7 @@
             . Stream.ordered True
             )
             countArray
-        $ Stream.unfold Handle.chunkReaderWith (n, src)
+        $ Handle.readChunksWith n src
 
 -------------------------------------------------------------------------------
 -- Serial counting using parallel version of countChar
@@ -590,7 +587,7 @@
     counts <- newCounts
     Stream.fold (Fold.drainMapM (countChar counts))
         $ Unicode.decodeUtf8Either
-        $ Stream.unfold Handle.reader src
+        $ Handle.read src
     return counts
 
 -------------------------------------------------------------------------------
diff --git a/examples/WordFrequency.hs b/examples/WordFrequency.hs
--- a/examples/WordFrequency.hs
+++ b/examples/WordFrequency.hs
@@ -9,24 +9,21 @@
 import Data.Hashable (Hashable(..))
 import System.Environment (getArgs)
 import Streamly.Data.Array (Unbox)
-import Streamly.Internal.Data.IsMap.HashMap ()
 
 import qualified Data.Char as Char
 import qualified Data.HashMap.Strict as Map
 import qualified Data.List as List
 import qualified Data.Ord as Ord
 import qualified Streamly.Data.Array as Array
-import qualified Streamly.Data.Fold as Fold
-import qualified Streamly.Internal.Data.Fold.Container as Fold (toContainerIO)
+import qualified Streamly.Data.Fold.Prelude as Fold
 import qualified Streamly.Data.Stream as Stream
-import qualified Streamly.Internal.Data.Stream as Stream (wordsBy)
 import qualified Streamly.FileSystem.File as File
 import qualified Streamly.Unicode.Stream as Unicode
 
 hashArray :: (Unbox a, Integral b, Num c) =>
     Fold.Fold Identity a b -> Array.Array a -> c
 hashArray f arr =
-      Stream.unfold Array.reader arr
+      Array.read arr
     & Stream.fold f
     & fromIntegral . runIdentity
 
@@ -61,7 +58,7 @@
     inFile <- fmap head getArgs
 
     let counter = Fold.foldl' (\n _ -> n + 1) (0 :: Int)
-        classifier = Fold.toContainerIO id counter
+        classifier = Fold.toHashMapIO id counter
     -- Write the stream to a hashmap consisting of word counts
     mp <-
         File.read inFile                       -- Stream IO Word8
diff --git a/examples/WordServer.hs b/examples/WordServer.hs
--- a/examples/WordServer.hs
+++ b/examples/WordServer.hs
@@ -21,7 +21,7 @@
 -- connection is closed.
 lookupWords :: Socket -> IO ()
 lookupWords sk =
-      Stream.unfold Socket.reader sk             -- Stream IO Word8
+      Socket.read sk                             -- Stream IO Word8
     & Unicode.decodeLatin1                       -- Stream IO Char
     & Stream.parseMany word
     & Stream.catRights                           -- Stream IO String
@@ -43,6 +43,6 @@
 -- "nc" as a client to try it out.
 main :: IO ()
 main =
-      Stream.unfold TCP.acceptorOnPort 8091             -- Stream IO Socket
-    & Stream.parMapM id (Socket.forSocketM serve)       -- Stream IO ()
-    & Stream.fold Fold.drain                            -- IO ()
+      TCP.accept 8091                             -- Stream IO Socket
+    & Stream.parMapM id (Socket.forSocketM serve) -- Stream IO ()
+    & Stream.fold Fold.drain                      -- IO ()
diff --git a/streamly-examples.cabal b/streamly-examples.cabal
--- a/streamly-examples.cabal
+++ b/streamly-examples.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          streamly-examples
-version:       0.1.3
+version:       0.2.0
 license:       Apache-2.0
 license-file:  LICENSE
 author:        Composewell Technologies
@@ -60,12 +60,12 @@
 
 common exe-dependencies
   build-depends:
-      streamly              == 0.9.0
-    , streamly-core         == 0.1.0
-    , base                  >= 4.9   && < 4.18
+      streamly              == 0.10.0
+    , streamly-core         == 0.2.0
+    , base                  >= 4.9   && < 4.20
     , directory             >= 1.2   && < 1.4
     , transformers          >= 0.4   && < 0.7
-    , containers            >= 0.5   && < 0.7
+    , containers            >= 0.5   && < 0.8
     , random                >= 1.0.0 && < 2
     , exceptions            >= 0.8   && < 0.11
     , transformers-base     >= 0.4   && < 0.5
@@ -93,6 +93,8 @@
                -Wincomplete-uni-patterns
                -Wredundant-constraints
                -Wnoncanonical-monad-instances
+  if impl(ghc >= 9.8)
+    ghc-options: -Wno-x-partial
 
   if flag(fusion-plugin) && !impl(ghcjs) && !impl(ghc < 8.6)
     ghc-options: -fplugin Fusion.Plugin
@@ -139,7 +141,7 @@
   main-is: Interop/Conduit.hs
   if !impl(ghcjs) && flag(interop)
     buildable: True
-    build-depends: conduit >= 1.3.4.1 && < 1.3.5
+    build-depends: conduit >= 1.3.4.1 && < 1.4
   else
     buildable: False
 
@@ -209,7 +211,7 @@
   if flag(sdl2)
     buildable: True
     build-Depends:
-          text >= 1.2.3 && < 1.3
+          text >= 1.2.3 && < 2.2
         , sdl2 >= 2.5.0 && < 2.6
     if os(darwin)
         frameworks: Cocoa
@@ -331,7 +333,7 @@
   main-is: DateTimeParser.hs
   if !impl(ghcjs)
     buildable: True
-    build-depends: tasty-bench >= 0.3
+    build-depends: tasty-bench >= 0.3 && < 0.4
   else
     buildable: False
 
@@ -340,6 +342,6 @@
   main-is: LogParser.hs
   if !impl(ghcjs)
     buildable: True
-    build-depends: tasty-bench >= 0.3
+    build-depends: tasty-bench >= 0.3 && < 0.4
   else
     buildable: False
