diff --git a/Bio/Alignment/ACE.hs b/Bio/Alignment/ACE.hs
--- a/Bio/Alignment/ACE.hs
+++ b/Bio/Alignment/ACE.hs
@@ -28,8 +28,7 @@
 
 module Bio.Alignment.ACE (readACE, writeACE, Assembly(..), ptest, reads ) where
 
-#include <interlude.h>
-import Interlude hiding (lines,words,readFile,unwords -- ByteString clashes
+import Prelude   hiding (lines,words,readFile,unwords -- ByteString clashes
                         ,reads,pred                   -- Assembly clash
                         )
 
diff --git a/Bio/Alignment/BlastXML.hs b/Bio/Alignment/BlastXML.hs
--- a/Bio/Alignment/BlastXML.hs
+++ b/Bio/Alignment/BlastXML.hs
@@ -1,6 +1,6 @@
 -- Parse blast XML output using tagsoup
 
-module Bio.Alignment.BlastXML where
+module Bio.Alignment.BlastXML (readXML) where
 
 import Bio.Alignment.BlastData
 
@@ -23,6 +23,7 @@
                   in  rest `par` first : if null rest then [] else breaks p rest
 breaks _ []     = []
 
+getFrom :: [Tag] -> String -> String
 getFrom list tag = let xs = sections (isTagOpenName tag) list 
                    in if null xs || null (head xs) || (null . drop 1 . head) xs 
                       then error ("Couldn't find tag '"++show tag++"' in\n"++showSome list)
@@ -31,6 +32,7 @@
                              x -> error ("Unexpeced tag: "++ show x)
 
 -- Use pattern match since 'length' is strict, defeating the purpose.
+showSome :: [Tag] -> String
 showSome a@(_:_:_:_:_:_:_) = (init . show . take 5 $ a)++" ... ]"
 showSome a                 = show a
 
@@ -64,6 +66,7 @@
              }
     where get = getFrom hs
 
+
 hsp2match :: [Tag] -> BlastMatch
 hsp2match ms = BlastMatch
                { bits   = read $ get "Hsp_bit-score"
@@ -78,13 +81,14 @@
                          [] -> mkFrame $ get "Hsp_query-frame"
                          [(_o:TagText hf:_c)] -> case sections (isTagOpenName "Hsp_query-frame") ms of 
                                                    [] -> mkFrame hf
-                                                   [(_o:TagText qf:_c)] -> mkStrands hf qf
+                                                   [(__o:TagText qf:__c)] -> mkStrands hf qf
+                                                   e -> error ("hsp2match: should be tagopen/text/close:\n"++show e)
                          e -> error ("hsp2match: failed to determine frame:\n"++show e)
                }
     where get = getFrom ms
           mkFrame f = Frame (strand' $ signum $ read f) (abs $ read f)
           mkStrands h q = Strands (strand' $ read h) (strand' $ read q)
           strand' s = case s of 1 -> Plus; -1 -> Minus
-                                _ -> error ("Strand must be +1 or -1, but was"++show s)
+                                _ -> error ("Strand must be +1 or -1, but was: "++show s)
 
 
diff --git a/Bio/Sequence.hs b/Bio/Sequence.hs
--- a/Bio/Sequence.hs
+++ b/Bio/Sequence.hs
@@ -42,6 +42,9 @@
     -- | Packing words from sequences into integral data types 
     , HashF (..)
     , contigous, rcontig, rcpacked
+
+    -- * Entropy calculations
+    , KWords(..), entropy
     ) where
 
 -- basic sequence data structures
diff --git a/Bio/Sequence/Entropy.hs b/Bio/Sequence/Entropy.hs
--- a/Bio/Sequence/Entropy.hs
+++ b/Bio/Sequence/Entropy.hs
@@ -1,4 +1,4 @@
-module Bio.Sequence.Entropy where
+module Bio.Sequence.Entropy (KWords(..), entropy) where
 
 import Data.List
 
diff --git a/Bio/Sequence/Fasta.hs b/Bio/Sequence/Fasta.hs
--- a/Bio/Sequence/Fasta.hs
+++ b/Bio/Sequence/Fasta.hs
@@ -97,6 +97,7 @@
           | B.length y /= B.length z   = error ("mismatching sequence and quality lengths:"
                                                 ++ show (seqlabel s1,B.length y,B.length z))
           | otherwise   = Seq x y (Just z)
+      mkseq _ _ = error "readFastaQual: could not combine Fasta and Qual information"
   return $ zipWith mkseq ss qs
 
 -- | Write sequence and quality data simulatnously
@@ -144,7 +145,7 @@
   wHead h l
   let qls = splitsAt 20 q
       qs = B.pack . unwords . map show . BB.unpack
-  mapM_ ((\l -> B.hPut h l >> B.hPut h (B.pack "\n")) . qs) qls
+  mapM_ ((\l' -> B.hPut h l' >> B.hPut h (B.pack "\n")) . qs) qls
 wQual _ (Seq _ _ Nothing) = return ()
 
 -- ByteString operations
@@ -179,6 +180,7 @@
 mkSeqs :: [ByteString] -> [Sequence]
 mkSeqs = map mkSeq . blocks
 
+mkSeq :: [ByteString] -> Sequence
 mkSeq (l:ls) = Seq (B.drop 1 l) (B.concat $ takeWhile isSeq ls) Nothing
     where isSeq s = (not . B.null) s && ((flip elem) (['A'..'Z']++['a'..'z']) . B.head) s
 mkSeq [] = error "empty input to mkSeq"
@@ -187,6 +189,7 @@
 mkQual = map f . blocks
     where f (l:ls) = Seq (B.drop 1 l) B.empty
                      (Just $ BB.pack (map int (B.words $ B.unlines ls)))
+          f [] = error "mkQual: empty quality data"
           int = fromIntegral . fst . fromJust' . B.readInt
           fromJust' = maybe (error "Error in qual format") id
 
diff --git a/bio.cabal b/bio.cabal
--- a/bio.cabal
+++ b/bio.cabal
@@ -1,5 +1,5 @@
 Name:                bio
-Version:             0.3.3.1
+Version:             0.3.3.2
 License:             LGPL
 License-file:        LICENSE
 Author:              Ketil Malde
@@ -19,13 +19,13 @@
                      output parsing.  Partly implemented single linkage clustering, and
                      multiple alignment.
                      .
-                     The Darcs repository is at: <http://malde.org/~ketil/bio>.
+                     The Darcs repository is at: <http://malde.org/~ketil/biohaskell/biolib>.
 Homepage:            http://malde.org/~ketil/
 
 Tested-With:         GHC==6.8.2
 Build-Type:          Simple
 Build-Depends:       base>3, QuickCheck<2, binary, tagsoup>=0.4, bytestring,
-                     containers, array, interlude, parallel, parsec
+                     containers, array, parallel, parsec
 -- add fps for ghc 6.4.2; change imports in Bio/Sequence/TwoBit.hs if you want QC 2
 
 -- We omit the debian/ and Test/ files because those are for development, not installation.
