diff --git a/Biobase/Primary/Bounds.hs b/Biobase/Primary/Bounds.hs
new file mode 100644
--- /dev/null
+++ b/Biobase/Primary/Bounds.hs
@@ -0,0 +1,55 @@
+
+-- | A special class of bounds for RNA/pair encodings that are used to index
+-- into tables. We typically encode more in the alphabets than we want to use
+-- to index, so in order to keep things simple, we have specialized bounds.
+
+module Biobase.Primary.Bounds where
+
+{-
+
+-- | 'minNormal' and 'maxNormal' encode for, say, ACGU; while 'minExtended' and
+-- 'maxExtended' would allow 'N' as well. See Biobase.RNA and
+-- Biobase.RNA.ViennaPair for instances.
+
+class Bounded a => Bounds a where
+  minNormal :: a
+  maxNormal :: a
+  minExtended :: a
+  maxExtended :: a
+
+
+
+-- * Instances for tuples of size 2-6
+
+instance (Bounds a, Bounds b) => Bounds (a,b) where
+  minNormal = (minNormal, minNormal)
+  maxNormal = (maxNormal, maxNormal)
+  minExtended = (minExtended, minExtended)
+  maxExtended = (maxExtended, maxExtended)
+
+instance (Bounds a, Bounds b, Bounds c) => Bounds (a,b,c) where
+  minNormal = (minNormal, minNormal, minNormal)
+  maxNormal = (maxNormal, maxNormal, maxNormal)
+  minExtended = (minExtended, minExtended, minExtended)
+  maxExtended = (maxExtended, maxExtended, maxExtended)
+
+instance (Bounds a, Bounds b, Bounds c, Bounds d) => Bounds (a,b,c,d) where
+  minNormal = (minNormal, minNormal, minNormal, minNormal)
+  maxNormal = (maxNormal, maxNormal, maxNormal, maxNormal)
+  minExtended = (minExtended, minExtended, minExtended, minExtended)
+  maxExtended = (maxExtended, maxExtended, maxExtended, maxExtended)
+
+instance (Bounds a, Bounds b, Bounds c, Bounds d, Bounds e) => Bounds (a,b,c,d,e) where
+  minNormal = (minNormal, minNormal, minNormal, minNormal, minNormal)
+  maxNormal = (maxNormal, maxNormal, maxNormal, maxNormal, maxNormal)
+  minExtended = (minExtended, minExtended, minExtended, minExtended, minExtended)
+  maxExtended = (maxExtended, maxExtended, maxExtended, maxExtended, maxExtended)
+
+instance (Bounds a, Bounds b, Bounds c, Bounds d, Bounds e, Bounds f) => Bounds (a,b,c,d,e,f) where
+  minNormal = (minNormal, minNormal, minNormal, minNormal, minNormal, minNormal)
+  maxNormal = (maxNormal, maxNormal, maxNormal, maxNormal, maxNormal, maxNormal)
+  minExtended = (minExtended, minExtended, minExtended, minExtended, minExtended, minExtended)
+  maxExtended = (maxExtended, maxExtended, maxExtended, maxExtended, maxExtended, maxExtended)
+
+-}
+
diff --git a/BiobaseXNA.cabal b/BiobaseXNA.cabal
--- a/BiobaseXNA.cabal
+++ b/BiobaseXNA.cabal
@@ -1,5 +1,5 @@
 name:           BiobaseXNA
-version:        0.9.1.0
+version:        0.9.1.1
 author:         Christian Hoener zu Siederdissen
 maintainer:     choener@bioinf.uni-leipzig.de
 homepage:       http://www.bioinf.uni-leipzig.de/~choener/
@@ -64,6 +64,7 @@
   exposed-modules:
     Biobase.Primary
     Biobase.Primary.AA
+    Biobase.Primary.Bounds
     Biobase.Primary.Hashed
     Biobase.Primary.IUPAC
     Biobase.Primary.Letter
