diff --git a/hw-streams.cabal b/hw-streams.cabal
--- a/hw-streams.cabal
+++ b/hw-streams.cabal
@@ -1,9 +1,7 @@
--- This file has been generated from package.yaml by hpack version 0.18.1.
---
--- see: https://github.com/sol/hpack
+cabal-version: 1.12
 
 name:           hw-streams
-version:        0.0.0.8
+version:        0.0.0.9
 synopsis:       Primitive functions and data types
 description:    Primitive functions and data types.
 category:       Data
@@ -17,8 +15,6 @@
 license-file:   LICENSE
 tested-with:    GHC == 8.6.1, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3
 build-type:     Simple
-cabal-version:  >= 1.10
-
 extra-source-files:
     README.md
 
@@ -32,23 +28,6 @@
   default: False
 
 library
-  hs-source-dirs:
-      src
-  other-extensions: AllowAmbiguousTypes
-  ghc-options: -Wall -O2 -msse4.2
-  build-depends:
-      base            >= 4.8        && < 5
-    , bytestring      >= 0.9        && < 0.11
-    , ghc-prim        >= 0.4        && < 0.6
-    , hw-bits         >= 0.7.0.3    && < 0.8
-    , hw-prim         >= 0.6.2.17   && < 0.7
-    , mmap            >= 0.5        && < 0.6
-    , primitive       >= 0.6.3.0    && < 0.7
-    , vector          >= 0.12       && < 0.13
-    , semigroups      >= 0.8.4      && < 0.19
-    , transformers    >= 0.4        && < 0.6
-  if flag(bounds-checking-enabled)
-    cpp-options: -DBOUNDS_CHECKING_ENABLED
   exposed-modules:
       HaskellWorks.Data.Streams.ByteString
       HaskellWorks.Data.Streams.ByteString.Lazy
@@ -62,65 +41,84 @@
       HaskellWorks.Data.Streams.Vector.Storable
   other-modules:
       Paths_hw_streams
+  hs-source-dirs:
+      src
+  other-extensions: AllowAmbiguousTypes
+  ghc-options: -Wall -O2 -msse4.2
+  build-depends:
+      base >=4.8 && <5
+    , bytestring >=0.9 && <0.11
+    , ghc-prim >=0.4 && <0.6
+    , hw-bits >=0.7.0.3 && <0.8
+    , hw-prim >=0.6.2.17 && <0.7
+    , mmap >=0.5 && <0.6
+    , primitive >=0.6.3.0 && <0.7
+    , semigroups >=0.8.4 && <0.19
+    , transformers >=0.4 && <0.6
+    , vector >=0.12 && <0.13
+  if flag(bounds-checking-enabled)
+    cpp-options: -DBOUNDS_CHECKING_ENABLED
   default-language: Haskell2010
 
 test-suite hw-streams-test
   type: exitcode-stdio-1.0
   main-is: Spec.hs
+  other-modules:
+      HaskellWorks.Data.Streams.Stream.OpsSpec
+      HaskellWorks.Data.Streams.Vector.StorableSpec
+      Test.Gen
+      Paths_hw_streams
   hs-source-dirs:
       test
   other-extensions: AllowAmbiguousTypes
   ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base            >= 4.8        && < 5
-    , bytestring      >= 0.9        && < 0.11
-    , ghc-prim        >= 0.4        && < 0.6
-    , hw-bits         >= 0.7.0.3    && < 0.8
-    , hw-prim         >= 0.6.2.17   && < 0.7
-    , mmap            >= 0.5        && < 0.6
-    , primitive       >= 0.6.3.0    && < 0.7
-    , vector          >= 0.12       && < 0.13
-    , semigroups      >= 0.8.4      && < 0.19
-    , transformers    >= 0.4        && < 0.6
-    , QuickCheck          >= 2.10       && < 2.13
-    , directory           >= 1.2        && < 1.4
-    , exceptions          >= 0.8        && < 0.11
-    , hedgehog            >= 0.5        && < 0.7
-    , hspec               >= 2.4        && < 2.6
-    , hw-hspec-hedgehog   >= 0.1        && < 0.2
+      QuickCheck >=2.10 && <2.13
+    , base >=4.8 && <5
+    , bytestring >=0.9 && <0.11
+    , directory >=1.2 && <1.4
+    , exceptions >=0.8 && <0.11
+    , ghc-prim >=0.4 && <0.6
+    , hedgehog >=0.5 && <0.7
+    , hspec >=2.4 && <2.6
+    , hw-bits >=0.7.0.3 && <0.8
+    , hw-hspec-hedgehog >=0.1 && <0.2
+    , hw-prim >=0.6.2.17 && <0.7
     , hw-streams
+    , mmap >=0.5 && <0.6
+    , primitive >=0.6.3.0 && <0.7
+    , semigroups >=0.8.4 && <0.19
+    , transformers >=0.4 && <0.6
+    , vector >=0.12 && <0.13
   if flag(bounds-checking-enabled)
     cpp-options: -DBOUNDS_CHECKING_ENABLED
-  other-modules:
-      HaskellWorks.Data.Streams.Stream.OpsSpec
-      HaskellWorks.Data.Streams.Vector.StorableSpec
-      Test.Gen
   default-language: Haskell2010
+  build-tool-depends: hspec-discover:hspec-discover
 
 benchmark bench
   type: exitcode-stdio-1.0
   main-is: Main.hs
+  other-modules:
+      Baseline.Data.Streams.Vector.Storable
+      Reference.Data.Streams.Vector.Storable
+      Paths_hw_streams
   hs-source-dirs:
       bench
   other-extensions: AllowAmbiguousTypes
   ghc-options: -Wall -O2 -msse4.2
   build-depends:
-      base            >= 4.8        && < 5
-    , bytestring      >= 0.9        && < 0.11
-    , ghc-prim        >= 0.4        && < 0.6
-    , hw-bits         >= 0.7.0.3    && < 0.8
-    , hw-prim         >= 0.6.2.17   && < 0.7
-    , mmap            >= 0.5        && < 0.6
-    , primitive       >= 0.6.3.0    && < 0.7
-    , vector          >= 0.12       && < 0.13
-    , semigroups      >= 0.8.4      && < 0.19
-    , transformers    >= 0.4        && < 0.6
-    , criterion     >= 1.2      && < 1.6
+      base >=4.8 && <5
+    , bytestring >=0.9 && <0.11
+    , criterion >=1.2 && <1.6
+    , ghc-prim >=0.4 && <0.6
+    , hw-bits >=0.7.0.3 && <0.8
+    , hw-prim >=0.6.2.17 && <0.7
     , hw-streams
-    , mmap          >= 0.5      && < 0.6
+    , mmap >=0.5 && <0.6
+    , primitive >=0.6.3.0 && <0.7
+    , semigroups >=0.8.4 && <0.19
+    , transformers >=0.4 && <0.6
+    , vector >=0.12 && <0.13
   if flag(bounds-checking-enabled)
     cpp-options: -DBOUNDS_CHECKING_ENABLED
-  other-modules:
-      Baseline.Data.Streams.Vector.Storable
-      Reference.Data.Streams.Vector.Storable
   default-language: Haskell2010
diff --git a/src/HaskellWorks/Data/Streams/Stream.hs b/src/HaskellWorks/Data/Streams/Stream.hs
--- a/src/HaskellWorks/Data/Streams/Stream.hs
+++ b/src/HaskellWorks/Data/Streams/Stream.hs
@@ -136,3 +136,8 @@
           Just w -> Yield w (s, Nothing)
 {-# INLINE dupMap #-}
 
+fromList :: [a] -> Stream a
+fromList as = Stream step as Unknown
+  where step []     = Done
+        step (b:bs) = Yield b bs
+{-# INLINE [1] fromList #-}
