diff --git a/blastxml.cabal b/blastxml.cabal
--- a/blastxml.cabal
+++ b/blastxml.cabal
@@ -1,5 +1,5 @@
 Name:                blastxml
-Version:             0.2
+Version:             0.3
 Synopsis:            Library for reading Blast XML output
 Description:         This library contains a data structure and functions for 
 		     reading output from the BLAST sequence alignment program.
@@ -18,8 +18,7 @@
    Tag:       0.2
 
 Library
-  Exposed-modules: Bio.BlastXML
-  Other-modules:   Bio.BlastData
-  Build-depends:   base >= 3 && < 5, bytestring, parallel, tagsoup
+  Exposed-modules: Bio.BlastXML Bio.BlastData
+  Build-depends:   base >= 3 && < 5, biocore >= 0.3.0, bytestring, parallel, tagsoup
   Hs-Source-Dirs:  src
   Ghc-Options:     -Wall
diff --git a/src/Bio/BlastData.hs b/src/Bio/BlastData.hs
--- a/src/Bio/BlastData.hs
+++ b/src/Bio/BlastData.hs
@@ -17,16 +17,9 @@
 module Bio.BlastData where
 
 import Data.ByteString.Lazy.Char8 (ByteString)
+import Bio.Core
 
 -- ------------------------------------------------------------
-
--- | The sequence id, i.e. the first word of the header field.
-type SeqId = ByteString
-
--- | The 'Strand' indicates the direction of the match, i.e. the plain sequence or
---   its reverse complement.
-data Strand = Plus | Minus deriving (Read,Show,Eq)
-
 -- | The Aux field in the BLAST output includes match information that depends
 --   on the BLAST flavor (blastn, blastx, or blastp).  This data structure captures
 --   those variations.
@@ -44,12 +37,12 @@
                    deriving Show
 
 -- | Each query sequence generates a 'BlastRecord'
-data BlastRecord = BlastRecord { query :: !SeqId, qlength :: !Int
+data BlastRecord = BlastRecord { query :: !SeqLabel, qlength :: !Int
                                , hits :: [BlastHit] } deriving Show
 
 -- | Each match between a query and a target sequence (or subject)
 --   is a 'BlastHit'.
-data BlastHit = BlastHit { subject :: !SeqId, slength :: !Int 
+data BlastHit = BlastHit { subject :: !SeqLabel, slength :: !Int 
                          , matches :: [BlastMatch] } deriving Show
 -- | A 'BlastHit' may contain multiple separate matches (typcially when
 --   an indel causes a frameshift that blastx is unable to bridge).
diff --git a/src/Bio/BlastXML.hs b/src/Bio/BlastXML.hs
--- a/src/Bio/BlastXML.hs
+++ b/src/Bio/BlastXML.hs
@@ -16,6 +16,7 @@
                     , module Bio.BlastData) where
 
 import Bio.BlastData
+import Bio.Core
 
 import qualified Data.ByteString.Lazy.Char8 as B
 import Text.HTML.TagSoup
@@ -70,7 +71,7 @@
 
 iter2rec :: [[STag]] -> BlastRecord
 iter2rec (i:hs) = BlastRecord 
-              { query = get "Iteration_query-def"
+              { query = SeqLabel $ get "Iteration_query-def"
               , qlength = readI $ get "Iteration_query-len"
               , hits = map hit2hit hs
               }
@@ -80,7 +81,7 @@
 
 hit2hit :: [STag] -> BlastHit
 hit2hit hs = BlastHit 
-             { subject = get "Hit_def"
+             { subject = SeqLabel $ get "Hit_def"
              , slength = readI $ get "Hit_len"
              , matches = map hsp2match $ partitions (isTagOpenName "Hsp") hs
              }
@@ -124,5 +125,3 @@
           -- ignore frame also for tblastx hits (it can be reconstructed from location)
           strand' :: Int -> Strand
           strand' s = if s > 0 then Plus else Minus
-
-
