diff --git a/listlike-instances.cabal b/listlike-instances.cabal
--- a/listlike-instances.cabal
+++ b/listlike-instances.cabal
@@ -1,5 +1,5 @@
 Name:                listlike-instances
-Version:             0.2
+Version:             0.2.1
 Synopsis:            Extra instances of the ListLike class
 Description:         Provides ListLike instances for Vector and Text types
 Homepage:            http://jwlato.webfactional.com/haskell/listlike-instances
@@ -20,6 +20,7 @@
                      Data.ListLike.Text.Text
                      Data.ListLike.Text.TextLazy
                      Data.ListLike.Vector
+                     Data.ListLike.Vector.Generic
                      Data.ListLike.Vector.Storable
                      Data.ListLike.Vector.Unboxed
                      Data.ListLike.Vector.Vector
diff --git a/src/Data/ListLike/Text/Text.hs b/src/Data/ListLike/Text/Text.hs
--- a/src/Data/ListLike/Text/Text.hs
+++ b/src/Data/ListLike/Text/Text.hs
@@ -7,7 +7,7 @@
 
 import qualified Data.Text as T
 import qualified Data.Text.IO as TI
-import           Data.Text.Encoding (decodeASCII)
+import           Data.Text.Encoding (decodeUtf8)
 import           Data.ListLike
 import           Data.ListLike.String
 
@@ -73,8 +73,8 @@
 instance ListLikeIO T.Text Char where
     hGetLine = TI.hGetLine
     hGetContents = TI.hGetContents
-    hGet h c = BS.hGet h c >>= return . decodeASCII
-    hGetNonBlocking h i = BS.hGetNonBlocking h i >>= return . decodeASCII
+    hGet h c = BS.hGet h c >>= return . decodeUtf8
+    hGetNonBlocking h i = BS.hGetNonBlocking h i >>= return . decodeUtf8
     hPutStr = TI.hPutStr
     hPutStrLn = TI.hPutStrLn
     getLine = TI.getLine
diff --git a/src/Data/ListLike/Text/TextLazy.hs b/src/Data/ListLike/Text/TextLazy.hs
--- a/src/Data/ListLike/Text/TextLazy.hs
+++ b/src/Data/ListLike/Text/TextLazy.hs
@@ -7,7 +7,7 @@
 
 import qualified Data.Text.Lazy as T
 import qualified Data.Text.Lazy.IO as TI
-import           Data.Text.Encoding (decodeASCII)
+import           Data.Text.Encoding (decodeUtf8)
 import           Data.ListLike
 import           Data.ListLike.String
 
@@ -71,8 +71,8 @@
 instance ListLikeIO T.Text Char where
     hGetLine = TI.hGetLine
     hGetContents = TI.hGetContents
-    hGet h = fmap (T.fromStrict . decodeASCII) . BS.hGet h
-    hGetNonBlocking h = fmap (T.fromStrict . decodeASCII) . BS.hGetNonBlocking h
+    hGet h = fmap (T.fromStrict . decodeUtf8) . BS.hGet h
+    hGetNonBlocking h = fmap (T.fromStrict . decodeUtf8) . BS.hGetNonBlocking h
     hPutStr = TI.hPutStr
     hPutStrLn = TI.hPutStrLn
     getLine = TI.getLine
diff --git a/src/Data/ListLike/Vector.hs b/src/Data/ListLike/Vector.hs
--- a/src/Data/ListLike/Vector.hs
+++ b/src/Data/ListLike/Vector.hs
@@ -1,3 +1,7 @@
+-- | ListLike instances for several @Data.Vector@ types.
+-- The `Data.ListLike.Vector.Generic` instances are not exported from this
+-- module in order to prevent collisions.
+--
 module Data.ListLike.Vector (
   module Data.ListLike.Vector.Storable
  ,module Data.ListLike.Vector.Unboxed
diff --git a/src/Data/ListLike/Vector/Generic.hs b/src/Data/ListLike/Vector/Generic.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ListLike/Vector/Generic.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE MultiParamTypeClasses
+            ,FlexibleContexts
+            ,FlexibleInstances
+            ,OverlappingInstances
+            ,UndecidableInstances #-}
+
+-- | ListLike instance for any type supporting the @Data.Vector.Generic@
+-- interface.  To avoid collisions with other Vector instances, this module
+-- must be imported directly.
+module Data.ListLike.Vector.Generic ()
+
+where
+
+import qualified Data.Vector.Generic as V
+import           Data.Vector.Generic ((!))
+import           Data.ListLike
+import           Data.ListLike.String
+
+import           Data.Monoid
+
+instance V.Vector v a => FoldableLL (v a) a where
+    foldl = V.foldl
+    foldl' = V.foldl'
+    foldl1 = V.foldl1
+    foldr = V.foldr
+    foldr' = V.foldr'
+    foldr1 = V.foldr1
+
+instance (Monoid (v a), Eq (v a), V.Vector v a) => ListLike (v a) a where
+    empty = V.empty
+    singleton = V.singleton
+    cons = V.cons
+    snoc = V.snoc
+    append = mappend
+    head = V.head
+    last = V.last
+    tail = V.tail
+    init = V.init
+    null = V.null
+    length = V.length
+    rigidMap = V.map
+    reverse = V.reverse
+    --intersperse =
+    concat = V.concat . toList
+    rigidConcatMap = V.concatMap
+    any = V.any
+    all = V.all
+    maximum = V.maximum
+    minimum = V.minimum
+    replicate = V.replicate
+    take = V.take
+    drop = V.drop
+    --splitAt =
+    takeWhile = V.takeWhile
+    dropWhile = V.dropWhile
+    span = V.span
+    break = V.break
+    --group =
+    --inits =
+    --tails =
+    isPrefixOf = isPrefixOf'
+    isSuffixOf = isSuffixOf'
+    elem = V.elem
+    find = V.find
+    filter = V.filter
+    index = (!)
+    findIndex = V.findIndex
+    toList = V.toList
+    fromList = V.fromList
+    fromListLike = fromList . toList
+    --groupBy f = 
+    genericLength = fromInteger . fromIntegral . V.length
+    genericTake i = V.take (fromIntegral i)
+    genericDrop i = V.drop (fromIntegral i)
+    --genericSplitAt i = 
+    genericReplicate i = V.replicate (fromIntegral i)
+
+instance (Eq (v Char), V.Vector v Char) => StringLike (v Char) where
+    toString = V.toList
+    fromString = V.fromList
+    --words =
+    --lines =
+    unwords = let sp = V.singleton ' ' in V.concat . intersperse sp . toList
+    unlines = let eol = V.singleton '\n' in V.concat . intersperse eol . toList
+
+isPrefixOf' needle haystack
+  | V.null needle = True
+  | V.length needle < V.length haystack =
+            needle == V.slice 0 (V.length needle) haystack
+  | V.length needle == V.length haystack = needle == haystack
+  | otherwise = False
+isSuffixOf' needle haystack
+  | V.null needle = True
+  | V.length needle < V.length haystack =
+        needle == V.slice (V.length haystack - V.length needle)
+                          (V.length needle)
+                          haystack
+  | V.length needle == V.length haystack = needle == haystack
+  | otherwise = False
