diff --git a/Biobase/Types/Accession.hs b/Biobase/Types/Accession.hs
--- a/Biobase/Types/Accession.hs
+++ b/Biobase/Types/Accession.hs
@@ -7,15 +7,16 @@
 import Control.DeepSeq
 import Data.Aeson
 import Data.Binary
+import Data.Char (isLetter)
 import Data.Hashable (Hashable)
 import Data.Ix (Ix)
 import Data.Serialize
 import Data.Serialize.Text
 import Data.String
-import Data.Stringable
+import Data.String.Conversions (ConvertibleStrings(..), cs)
+import Data.String.Conversions.Monomorphic (toST, fromST)
 import Data.Text.Binary
-import Data.Text (Text, span)
-import Data.Char (isLetter)
+import Data.Text (Text, span, length)
 import GHC.Generics (Generic)
 import Prelude hiding (length,span)
 
@@ -45,14 +46,14 @@
 -- | Generate an accession with an explicit phantom type: @accession'
 -- Nucleotide "Bla"@ has type @:: Accession Nucleotide@.
 
-accession' :: Stringable s => t -> s -> Accession t
-accession' t = Accession . toText
+accession' :: ConvertibleStrings s Text => t -> s -> Accession t
+accession' t = Accession . toST
 
 -- | Generate an accession when the type @Accession t@ is clear from the
 -- context.
 
-accession :: Stringable s => s -> Accession t
-accession = Accession . toText
+accession :: ConvertibleStrings s Text => s -> Accession t
+accession = Accession . toST
 {-# Inline accession #-}
 
 -- | Retag an accession
diff --git a/Biobase/Types/Names.hs b/Biobase/Types/Names.hs
--- a/Biobase/Types/Names.hs
+++ b/Biobase/Types/Names.hs
@@ -14,16 +14,17 @@
 import Data.Aeson as A
 import Data.Binary      as DB
 import Data.Hashable
+import Data.Interned
+import Data.Interned.Text
 import Data.Serialize   as DS
 import Data.Serialize.Text
-import Data.Stringable as SA
 import Data.String as IS
+import Data.String.Conversions (ConvertibleStrings(..), cs)
+import Data.String.Conversions.Monomorphic (toST, fromST)
 import Data.Text.Binary
-import Data.Text (Text,pack)
+import Data.Text (Text, pack, unpack)
 import Data.Vector.Unboxed.Deriving
 import GHC.Generics
-import Data.Interned.Text
-import Data.Interned
 
 import Biobase.Types.Names.Internal
 
@@ -56,7 +57,7 @@
   {-# Inline fromString #-}
 
 instance Show SpeciesName where
-  showsPrec p i r = showsPrec p (toString i) r
+  showsPrec p i r = showsPrec p (unpack $ toST i) r
   {-# Inline showsPrec #-}
 
 instance Read SpeciesName where
@@ -65,38 +66,32 @@
 
 instance Hashable SpeciesName
 
-instance Stringable SpeciesName where
-  toString    = toString . speciesNameBimapLookupInt . getSpeciesNameRep
-  fromString  = speciesName . SA.fromString
-  length      = SA.length . speciesNameBimapLookupInt . getSpeciesNameRep
-  toText      = toText . speciesNameBimapLookupInt . getSpeciesNameRep
-  fromText    = speciesName . fromText
-  {-# Inline toString   #-}
-  {-# Inline fromString #-}
-  {-# Inline length     #-}
-  {-# Inline toText     #-}
-  {-# Inline fromText   #-}
+instance ConvertibleStrings Text SpeciesName where
+  convertString = speciesName
 
+instance ConvertibleStrings SpeciesName Text where
+  convertString = speciesNameBimapLookupInt . getSpeciesNameRep
+
 instance NFData SpeciesName
 
 instance Binary SpeciesName where
-  put = DB.put . toText
-  get = fromText <$> DB.get
+  put = DB.put . toST
+  get = fromST <$> DB.get
   {-# Inline put #-}
   {-# Inline get #-}
 
 instance Serialize SpeciesName where
-  put = DS.put . toText
-  get = fromText <$> DS.get
+  put = DS.put . toST
+  get = fromST <$> DS.get
   {-# Inline put #-}
   {-# Inline get #-}
 
 instance FromJSON SpeciesName where
-  parseJSON s = fromText <$> parseJSON s
+  parseJSON s = fromST <$> parseJSON s
   {-# Inline parseJSON #-}
 
 instance ToJSON SpeciesName where
-  toJSON = toJSON . toText
+  toJSON = toJSON . toST
   {-# Inline toJSON #-}
 
 
@@ -112,18 +107,12 @@
   rnf (TaxonomicRank it) = rnf (internedTextId it)
   {-# Inline rnf #-}
 
-instance Stringable TaxonomicRank where
-  toString    = toString . unintern . getTaxonomicRank
-  fromString  = fromText . pack
-  length      = SA.length . toText
-  toText      = unintern . getTaxonomicRank
-  fromText    = TaxonomicRank . intern
-  {-# Inline toString   #-}
-  {-# Inline fromString #-}
-  {-# Inline length     #-}
-  {-# Inline toText     #-}
-  {-# Inline fromText   #-}
+instance ConvertibleStrings Text TaxonomicRank where
+  convertString = TaxonomicRank . intern
 
+instance ConvertibleStrings TaxonomicRank Text where
+  convertString = unintern . getTaxonomicRank
+
 instance Hashable TaxonomicRank where
   hashWithSalt s (TaxonomicRank it) = hashWithSalt s (internedTextId it)
   {-# Inline hashWithSalt #-}
@@ -133,22 +122,22 @@
   {-# Inline readsPrec #-}
 
 instance Binary TaxonomicRank where
-  put = DB.put . toText
-  get = fromText <$> DB.get
+  put = DB.put . toST
+  get = fromST <$> DB.get
   {-# Inline put #-}
   {-# Inline get #-}
 
 instance Serialize TaxonomicRank where
-  put = DS.put . toText
-  get = fromText <$> DS.get
+  put = DS.put . toST
+  get = fromST <$> DS.get
   {-# Inline put #-}
   {-# Inline get #-}
 
 instance FromJSON TaxonomicRank where
-  parseJSON s = fromText <$> parseJSON s
+  parseJSON s = fromST <$> parseJSON s
   {-# Inline parseJSON #-}
 
 instance ToJSON TaxonomicRank where
-  toJSON = toJSON . toText
+  toJSON = toJSON . toST
   {-# Inline toJSON #-}
 
diff --git a/BiobaseTypes.cabal b/BiobaseTypes.cabal
--- a/BiobaseTypes.cabal
+++ b/BiobaseTypes.cabal
@@ -1,5 +1,5 @@
 name:           BiobaseTypes
-version:        0.1.2.0
+version:        0.1.2.1
 author:         Christian Hoener zu Siederdissen, 2015 - 2016
 copyright:      Christian Hoener zu Siederdissen, 2015 - 2016
 homepage:       https://github.com/choener/BiobaseTypes
@@ -11,7 +11,7 @@
 build-type:     Simple
 stability:      experimental
 cabal-version:  >= 1.10.0
-tested-with:    GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
+tested-with:    GHC == 7.10.3, GHC == 8.0.1
 synopsis:       Collection of types for bioinformatics
 description:
                 Types used in a number of bioinformatics libraries.
@@ -32,27 +32,26 @@
 
 library
   build-depends: base                     >= 4.7      &&  < 5.0
-               , aeson                    >= 0.8      &&  < 1.1
-               , binary                   >= 0.7      &&  < 0.8
-               , cereal                   >= 0.4      &&  < 0.6
-               , cereal-text              >= 0.1      &&  < 0.2
-               , cereal-vector            >= 0.2      &&  < 0.3
-               , data-default             >= 0.5      &&  < 0.6
-               , deepseq                  >= 1.3      &&  < 1.5
-               , hashable                 >= 1.2      &&  < 1.3
-               , intern                   >= 0.9      &&  < 0.10
-               , log-domain               >= 0.10     &&  < 0.11
-               , primitive                >= 0.5      &&  < 0.7
-               , QuickCheck               >= 2.7      &&  < 2.9
-               , stringable               >= 0.1.3    &&  < 0.2
-               , text                     >= 1.0      &&  < 1.3
-               , text-binary              >= 0.2      &&  < 0.3
-               , vector                   >= 0.10     &&  < 0.12
-               , vector-binary-instances  >= 0.2      &&  < 0.3
-               , vector-th-unbox          >= 0.2      &&  < 0.3
+               , aeson                    >= 0.8
+               , binary                   >= 0.7
+               , cereal                   >= 0.4
+               , cereal-text              >= 0.1
+               , cereal-vector            >= 0.2
+               , data-default             >= 0.5
+               , deepseq                  >= 1.3
+               , hashable                 >= 1.2
+               , intern                   >= 0.9
+               , primitive                >= 0.5
+               , QuickCheck               >= 2.7
+               , string-conversions       >= 0.4
+               , text                     >= 1.0
+               , text-binary              >= 0.2
+               , vector                   >= 0.10
+               , vector-binary-instances  >= 0.2
+               , vector-th-unbox          >= 0.2
                --
                , bimaps                   == 0.1.0.*
-               , PrimitiveArray           == 0.7.1.*
+               , PrimitiveArray           == 0.8.0.*
   exposed-modules:
     Biobase.Types.Accession
     Biobase.Types.Bitscore
@@ -71,6 +70,7 @@
   default-extensions: BangPatterns
                     , DataKinds
                     , DeriveGeneric
+                    , FlexibleContexts
                     , FlexibleInstances
                     , GeneralizedNewtypeDeriving
                     , KindSignatures
@@ -101,11 +101,12 @@
   default-extensions: ScopedTypeVariables
                     , TemplateHaskell
   build-depends: base
-               , BiobaseTypes
                , QuickCheck
                , tasty              >= 0.11
                , tasty-quickcheck   >= 0.8
                , tasty-th           >= 0.1
+               --
+               , BiobaseTypes
 
 
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,10 @@
+0.1.2.1
+-------
+
+- increased minimal required PrimitiveArray version
+- removed almost all upper bounds
+- removed ghc 7.8.4 as viable compiler
+
 0.1.2.0
 -------
 
