diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,9 @@
 # Changelog for streamly-bytestring
 
+## 0.2.1 (Dec 2023)
+
+* Support streamly-core-0.2.0
+
 ## 0.2.0 (Mar 2023)
 
 * Support streamly-core-0.1.0
diff --git a/src/Streamly/External/ByteString.hs b/src/Streamly/External/ByteString.hs
--- a/src/Streamly/External/ByteString.hs
+++ b/src/Streamly/External/ByteString.hs
@@ -37,25 +37,39 @@
 
 -- Internal imports
 import Data.ByteString.Internal (ByteString(..))
-import Streamly.Internal.Data.Array.Type (Array(..))
-import Streamly.Internal.Data.Unboxed (MutableByteArray(..))
 import Streamly.Internal.System.IO (unsafeInlineIO)
 
 import qualified Streamly.Data.Array as Array
 import qualified Streamly.Internal.Data.Unfold as Unfold (fold, mkUnfoldrM)
-import qualified Streamly.Internal.Data.Unboxed as Unboxed (nil)
+
+#if MIN_VERSION_streamly_core(0,2,0)
+import Streamly.Internal.Data.Array (Array(..))
+import Streamly.Internal.Data.MutByteArray (MutByteArray(..))
+import qualified Streamly.Internal.Data.MutByteArray as MutBA (nil)
+import qualified Streamly.Internal.Data.Stream as StreamD (Step(Yield))
+#else
+import Streamly.Internal.Data.Array.Type (Array(..))
+import Streamly.Internal.Data.Unboxed (MutableByteArray(..))
+import qualified Streamly.Internal.Data.Unboxed as MutBA (nil)
 import qualified Streamly.Internal.Data.Stream.StreamD as StreamD (Step(Yield))
+#endif
 
 import Prelude hiding (read)
 
+#if MIN_VERSION_streamly_core(0,2,0)
+#define MUT_BYTE_ARRAY MutByteArray
+#else
+#define MUT_BYTE_ARRAY MutableByteArray
+#endif
+
 {-# INLINE mutableByteArrayContents# #-}
 mutableByteArrayContents# :: MutableByteArray# RealWorld -> Addr#
 mutableByteArrayContents# marr# = byteArrayContents# (unsafeCoerce# marr#)
 
 -- | Helper function that creates a ForeignPtr
 {-# INLINE makeForeignPtr #-}
-makeForeignPtr :: MutableByteArray -> Int -> ForeignPtr a
-makeForeignPtr (MutableByteArray marr#) (I# off#) =
+makeForeignPtr :: MUT_BYTE_ARRAY -> Int -> ForeignPtr a
+makeForeignPtr (MUT_BYTE_ARRAY marr#) (I# off#) =
     ForeignPtr
         (mutableByteArrayContents# marr# `plusAddr#` off#)
         (PlainPtr marr#)
@@ -66,10 +80,10 @@
 {-# INLINE toArray #-}
 toArray :: ByteString -> Array Word8
 toArray (BS (ForeignPtr addr# _) _)
-    | Ptr addr# == nullPtr = Array Unboxed.nil 0 0
+    | Ptr addr# == nullPtr = Array MutBA.nil 0 0
 toArray (BS (ForeignPtr addr# (PlainPtr marr#)) len) =
     let off = I# (addr# `minusAddr#` mutableByteArrayContents# marr#)
-     in Array (MutableByteArray marr#) off (off + len)
+     in Array (MUT_BYTE_ARRAY marr#) off (off + len)
 toArray (BS fptr len) =
     unsafeInlineIO
         $ withForeignPtr fptr $ Unfold.fold (Array.writeN len) generator
@@ -85,10 +99,12 @@
 -- is performed in constant time.
 {-# INLINE fromArray #-}
 fromArray :: Array Word8 -> ByteString
-fromArray Array {..}
+fromArray (Array {..})
     | aLen == 0 = mempty
     | otherwise = BS (makeForeignPtr arrContents arrStart) aLen
-  where
+
+    where
+
     aLen = arrEnd - arrStart
 
 -- | Unfold a strict ByteString to a stream of Word8.
diff --git a/src/Streamly/External/ByteString/Lazy.hs b/src/Streamly/External/ByteString/Lazy.hs
--- a/src/Streamly/External/ByteString/Lazy.hs
+++ b/src/Streamly/External/ByteString/Lazy.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP             #-}
+
 module Streamly.External.ByteString.Lazy
   ( chunkReader
   , reader
@@ -19,8 +21,14 @@
 
 -- Internal imports
 import Data.ByteString.Lazy.Internal (ByteString(..), chunk)
-import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
+
+#if MIN_VERSION_streamly_core(0,2,0)
+import Streamly.Internal.Data.Unfold (Unfold(..))
+import Streamly.Internal.Data.Stream (Step(..))
+#else
 import Streamly.Internal.Data.Unfold.Type (Unfold(..))
+import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
+#endif
 
 import qualified Streamly.External.ByteString as Strict
 import qualified Streamly.Data.Array as Array
diff --git a/streamly-bytestring.cabal b/streamly-bytestring.cabal
--- a/streamly-bytestring.cabal
+++ b/streamly-bytestring.cabal
@@ -1,6 +1,6 @@
 cabal-version:  1.12
 name:           streamly-bytestring
-version:        0.2.0
+version:        0.2.1
 synopsis:       Library for streamly and bytestring interoperation.
 description:    Please see the README on GitHub at <https://github.com/psibi/streamly-bytestring#readme>
 category:       Streamly, Stream, ByteString
@@ -21,6 +21,7 @@
             , GHC==9.0.1
             , GHC==9.2.7
             , GHC==9.4.4
+            , GHC==9.6.2
 
 source-repository head
   type: git
@@ -44,7 +45,9 @@
                  -- windows.
                  || ( >= 0.11.3.1 && < 0.11.4 )
                  || == 0.11.4.*
-    , streamly-core == 0.1.0.*
+                 || == 0.11.5.*
+                 || == 0.12.0.*
+    , streamly-core >= 0.1.0 && < 0.2.2
   default-language: Haskell2010
 
 test-suite sb-test
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleContexts #-}
 
 module Main where
@@ -14,7 +15,12 @@
 import Test.QuickCheck.Instances.ByteString ()
 
 -- Internal imports
+#if MIN_VERSION_streamly_core(0,2,0)
+import Streamly.Internal.Data.Array (Array(..))
+#else
 import Streamly.Internal.Data.Array.Type (Array(..))
+#endif
+
 
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as BSL
