diff --git a/Biobase/FR3D.hs b/Biobase/FR3D.hs
--- a/Biobase/FR3D.hs
+++ b/Biobase/FR3D.hs
@@ -14,8 +14,10 @@
 import Data.ByteString.Char8 as BS
 import Data.List as L
 
+import Biobase.Secondary
 
 
+
 -- | Encapsulates all the "basepairs" information.
 
 data FR3D = FR3D
@@ -27,7 +29,7 @@
 -- | A single basepair in a basepair system.
 
 data Basepair = Basepair
-  { interaction :: ByteString
+  { interaction :: ExtPairAnnotation
   -- nucleotide 1
   , nucleotide1 :: Char
   , pdbnumber1 :: Int
@@ -45,7 +47,7 @@
 data LinFR3D = LinFR3D
   { pdbID :: ByteString
   , sequence :: ByteString
-  , pairs :: [(Int,Int,String)] -- TODO String -> CWW ?!
+  , pairs :: [ExtPairIdx] -- [(Int,Int,String)] -- TODO String -> CWW ?!
   } deriving (Show)
 
 -- | The default format is a bit unwieldy; Linearization assumes that all
@@ -60,9 +62,9 @@
   } where
       trans = snd $ L.mapAccumL ( \acc (x,y) -> (acc + 1 + BS.length y, (x,acc))
                                 ) 0 chains
-      f Basepair{..} =  ( maybe (-1) (\v -> v+seqpos1) $ L.lookup chain1 trans
-                        , maybe (-1) (\v -> v+seqpos2) $ L.lookup chain2 trans
-                        , BS.unpack interaction
+      f Basepair{..} =  ( ( maybe (-1) (\v -> v+seqpos1) $ L.lookup chain1 trans
+                          , maybe (-1) (\v -> v+seqpos2) $ L.lookup chain2 trans )
+                        , interaction
                         )
 
 class RemoveDuplicatePairs a where
@@ -74,4 +76,4 @@
 
 instance RemoveDuplicatePairs LinFR3D where
   removeDuplicatePairs x@LinFR3D{..} = x{pairs = L.filter f pairs} where
-    f (x,y,_) = x<y
+    f ((x,y),_) = x<y
diff --git a/Biobase/FR3D/Import.hs b/Biobase/FR3D/Import.hs
--- a/Biobase/FR3D/Import.hs
+++ b/Biobase/FR3D/Import.hs
@@ -16,6 +16,8 @@
 import Data.Maybe
 import System.FilePath.Find as F
 
+import Biobase.Secondary
+
 import Biobase.FR3D
 
 
@@ -33,7 +35,7 @@
     xs <- stream2list -- and all basepairs
     return FR3D
       { pdbid = maybe "" (BS.take 4) $ listToMaybe xs
-      , chains = L.map (second (BS.drop 1) . BS.span isAlpha . BS.drop 2) cs
+      , chains = L.map (second (BS.drop 1) . BS.span isAlphaNum . BS.drop 2) cs
       , basepairs = L.map bs2basepair $ xs
       }
 
@@ -43,7 +45,7 @@
 bs2basepair s
   | L.length ws /= 10 = error $ "can't parse line: " ++ unpack s
   | otherwise = Basepair
-    { interaction = ws!!1
+    { interaction = threeChar . BS.unpack $ ws!!1
     , nucleotide1 = BS.head $ ws!!2
     , pdbnumber1  = maybe (-1) fst . readInt $ ws!!3
     , chain1      = ws!!4
diff --git a/BiobaseFR3D.cabal b/BiobaseFR3D.cabal
--- a/BiobaseFR3D.cabal
+++ b/BiobaseFR3D.cabal
@@ -1,5 +1,5 @@
 name:           BiobaseFR3D
-version:        0.1.1.0
+version:        0.1.3.0
 author:         Christian Hoener zu Siederdissen
 maintainer:     choener@tbi.univie.ac.at
 homepage:       http://www.tbi.univie.ac.at/~choener/
@@ -25,6 +25,7 @@
                 Mathematical Biology/ (2008) 56:215–252.
 
 
+
 extra-source-files:
 
 library
@@ -32,7 +33,8 @@
     base >3 && <5,
     bytestring,
     filemanip,
-    iteratee
+    iteratee,
+    BiobaseXNA >= 0.5.4
 
   exposed-modules:
     Biobase.FR3D
