diff --git a/Biobase.cabal b/Biobase.cabal
--- a/Biobase.cabal
+++ b/Biobase.cabal
@@ -1,5 +1,5 @@
 name:           Biobase
-version:        0.0.2.0
+version:        0.0.2.1
 author:         Christian Hoener zu Siederdissen
 maintainer:     choener@tbi.univie.ac.at
 homepage:       http://www.tbi.univie.ac.at/~choener/Haskell/
@@ -23,10 +23,10 @@
 library
   build-depends:
     array,
-    base >= 4 && < 5,
-    vector >= 0.6 && < 7,
-    primitive >= 0.3 && < 0.4,
-    PrimitiveArray >= 0.0.2.1 && < 0.0.3
+    base >=4 && <5,
+    vector >=0.7 && <8,
+    primitive >=0.3 && <0.4,
+    PrimitiveArray >=0.0.2.1 && <0.0.3
 
   exposed-modules:
     Biobase.Constants
diff --git a/Biobase/RNA.hs b/Biobase/RNA.hs
--- a/Biobase/RNA.hs
+++ b/Biobase/RNA.hs
@@ -119,6 +119,7 @@
 deriving instance VGM.MVector VU.MVector ViennaPair
 deriving instance VG.Vector VU.Vector ViennaPair
 deriving instance VU.Unbox ViennaPair
+deriving instance Prim ViennaPair
 
 instance Enum ViennaPair where
   toEnum x
@@ -160,8 +161,19 @@
 
 -- * Transformations between Nucleotide and ViennaPair
 
+pairTable = fromAssocs (nucE,nucE) (nucU,nucU) vpNP
+  [ ((nucC,nucG),vpCG)
+  , ((nucG,nucC),vpGC)
+  , ((nucG,nucU),vpGU)
+  , ((nucU,nucG),vpUG)
+  , ((nucA,nucU),vpAU)
+  , ((nucU,nucA),vpUA)
+  ]
+{- NOINLINE pairTable #-}
+
 toPair :: Nucleotide -> Nucleotide -> ViennaPair
-toPair x y
+toPair x y = pairTable ! (x,y)
+{-
   | x==nucC&&y==nucG = vpCG
   | x==nucG&&y==nucC = vpGC
   | x==nucG&&y==nucU = vpGU
@@ -169,6 +181,7 @@
   | x==nucA&&y==nucU = vpAU
   | x==nucU&&y==nucA = vpUA
   | otherwise        = vpNP
+-}
 {-# INLINE toPair #-}
 
 pairs :: Nucleotide -> Nucleotide -> Bool
