diff --git a/Biobase/Infernal/VerboseHit.hs b/Biobase/Infernal/VerboseHit.hs
--- a/Biobase/Infernal/VerboseHit.hs
+++ b/Biobase/Infernal/VerboseHit.hs
@@ -1,10 +1,12 @@
 {-# LANGUAGE RecordWildCards #-}
 
--- | Provides a datatype for cmsearch verbose output.
+-- | Provides a datatype for cmsearch verbose output. The Import/Export system
+-- now allows for primitive annotations using "##" as the first two characters.
+-- Annotations are only accepted for individual hits.
 
 module Biobase.Infernal.VerboseHit where
 
-import qualified Data.ByteString.Char8 as BS
+import Data.ByteString.Char8 as BS
 import Text.Printf
 
 
@@ -14,17 +16,18 @@
 data VerboseHit = VerboseHit
   { vhTarget  :: (Int,Int)  -- ^ part of target sequence (start counting at 1)
   , vhQuery   :: (Int,Int)  -- ^ which part of the CM/stk do we align to
-  , vhCM      :: BS.ByteString  -- ^ the CM for this alignment
+  , vhCM      :: ByteString  -- ^ the CM for this alignment
   , vhStrand  :: Strand     -- ^ should be either '+' or '-'
   , vhScore   :: Double     -- ^ bit score
   , vhEvalue  :: Double     -- ^ number of hits we expect to find with 'score' or higher for 'targetSequence' length
   , vhPvalue  :: Double     -- ^ ?
   , vhGC      :: Int        -- ^ ?
-  , vhScaffold :: BS.ByteString -- ^ scaffold, chromosome, ... (the name of the sequence, not the sequence data!)
-  , vhWuss :: BS.ByteString -- ^ fancy secondary structure annotation using wuss notation
-  , vhConsensus :: BS.ByteString -- ^ query consensus (upper: highly, lower: weak/no)
-  , vhScoring   :: BS.ByteString -- ^ represents where positive and negative scores come from
-  , vhSequence :: BS.ByteString -- ^ the target sequence which aligns to the model
+  , vhScaffold :: ByteString -- ^ scaffold, chromosome, ... (the name of the sequence, not the sequence data!)
+  , vhWuss :: ByteString -- ^ fancy secondary structure annotation using wuss notation
+  , vhConsensus :: ByteString -- ^ query consensus (upper: highly, lower: weak/no)
+  , vhScoring   :: ByteString -- ^ represents where positive and negative scores come from
+  , vhSequence :: ByteString -- ^ the target sequence which aligns to the model
+  , vhAnnotation :: [ByteString] -- ^ any annotations that could be associated (# lines)
   } deriving (Show,Read)
 
 type Strand = Char
diff --git a/Biobase/Infernal/VerboseHit/Export.hs b/Biobase/Infernal/VerboseHit/Export.hs
--- a/Biobase/Infernal/VerboseHit/Export.hs
+++ b/Biobase/Infernal/VerboseHit/Export.hs
@@ -27,7 +27,7 @@
 -- TOOD How to append the last line "//" to the finished stream, if at least
 -- one element was printed?
 
-eneeByteString :: Monad m => Enumeratee [VerboseHit] BS.ByteString m a
+eneeByteString :: Monad m => Enumeratee [VerboseHit] ByteString m a
 eneeByteString = eneeByteStrings ><> mapChunks BS.concat
 
 -- | This transformer keeps a 1-1 relationship between each 'VerboseHit' and
@@ -35,17 +35,19 @@
 -- individual 'VerboseHit's are to be annotated.
 
 eneeByteStrings :: Monad m => Enumeratee [VerboseHit] [ByteString] m a
-eneeByteStrings = unfoldConvStream f (AliGo BS.empty BS.empty '?') where
+eneeByteStrings = unfoldConvStream f (AliGo BS.empty BS.empty '?' []) where
   f acc = do
     h <- I.head
     let na = newAcc acc h
-    return (fst na , return . BS.unlines $ snd na ++ [showVerboseHit h])
+    return ( fst na
+           , return . BS.unlines $ snd na ++ P.map (append "## ") (vhAnnotation h)  ++ [showVerboseHit h]
+           )
 
 -- | Given the current state "a" and verbose hit "h", determine if any state
 -- switches have to be emitted.
 
 newAcc a@(AliGo{..}) h@VerboseHit{..}
-  | otherwise = ( AliGo vhCM vhScaffold vhStrand, ls )
+  | otherwise = ( AliGo vhCM vhScaffold vhStrand [], ls )
   where ls = [ "//" | aliCM /= BS.empty && aliCM /= vhCM ] ++
              [ "CM: " `BS.append` vhCM | aliCM /= vhCM ] ++
              [ ">" `BS.append` vhScaffold `BS.append` "\n" | aliScaffold /= vhScaffold ] ++
diff --git a/Biobase/Infernal/VerboseHit/Import.hs b/Biobase/Infernal/VerboseHit/Import.hs
--- a/Biobase/Infernal/VerboseHit/Import.hs
+++ b/Biobase/Infernal/VerboseHit/Import.hs
@@ -35,25 +35,26 @@
 -- accumulator to keep track of the current CM, scaffold and strand.
 
 eneeVerboseHit :: (Functor m, Monad m) => Enumeratee BS.ByteString [VerboseHit] m a
-eneeVerboseHit = enumLinesBS ><> I.filter (not . BS.null) ><> unfoldConvStream f (AliGo BS.empty BS.empty '?') where
+eneeVerboseHit = enumLinesBS ><> I.filter (not . BS.null) ><> unfoldConvStream f (AliGo BS.empty BS.empty '?' []) where
   f acc = do
     h' <- tryHead
     case h' of
       Nothing -> return (acc, [])
       (Just h)
-        | "CM: "    `BS.isInfixOf` h -> return (acc{aliCM = BS.copy $ BS.drop 4 h}, [])
-        | ">"       `BS.isInfixOf` h -> return (acc{aliScaffold = BS.copy $ BS.drop 1 h}, [])
-        | "  Plus"  `BS.isInfixOf` h -> return (acc{aliStrand = '+'}, [])
-        | "  Minus" `BS.isInfixOf` h -> return (acc{aliStrand = '-'}, [])
-        | " Query"  `BS.isInfixOf` h -> do
-            x <- qs h (aliCM acc) (aliScaffold acc) (aliStrand acc)
-            return (acc,x)
+        | "##"      `isPrefixOf` h -> return (acc{aliAnnotation = aliAnnotation acc ++ [BS.drop 2 h]},[])
+        | "CM: "    `isInfixOf`  h -> return (acc{aliCM = BS.copy $ BS.drop 4 h, aliAnnotation = []}, [])
+        | ">"       `isInfixOf`  h -> return (acc{aliScaffold = BS.copy $ BS.drop 1 h, aliAnnotation = []}, [])
+        | "  Plus"  `isInfixOf`  h -> return (acc{aliStrand = '+', aliAnnotation = []}, [])
+        | "  Minus" `isInfixOf`  h -> return (acc{aliStrand = '-', aliAnnotation = []}, [])
+        | " Query"  `isInfixOf`  h -> do
+            x <- qs h (aliCM acc) (aliScaffold acc) (aliStrand acc) (aliAnnotation acc)
+            return (acc{aliAnnotation = []},x)
         | otherwise -> return (acc,[])
 
 -- | Parses one CM query result.
 
-qs :: Monad m => BS.ByteString -> BS.ByteString -> BS.ByteString -> Char -> Iteratee [BS.ByteString] m [VerboseHit]
-qs query cm scaf pm = do
+qs :: Monad m => ByteString -> ByteString -> ByteString -> Char -> [ByteString] -> Iteratee [ByteString] m [VerboseHit]
+qs query cm scaf pm anno = do
   let q = fromRight . parseOnly qt $ query
   s <- I.head >>= return . fromRight . parseOnly sepg
   l <- fourLines $ sel4 q
@@ -71,6 +72,7 @@
     , vhConsensus = cpy $ l!!1
     , vhScoring = cpy $ l!!2
     , vhSequence = cpy $ l!!3
+    , vhAnnotation = anno
     }
   where
     cpy = BS.copy . BS.concat
diff --git a/Biobase/Infernal/VerboseHit/Internal.hs b/Biobase/Infernal/VerboseHit/Internal.hs
--- a/Biobase/Infernal/VerboseHit/Internal.hs
+++ b/Biobase/Infernal/VerboseHit/Internal.hs
@@ -3,15 +3,16 @@
 
 module Biobase.Infernal.VerboseHit.Internal where
 
-import qualified Data.ByteString.Char8 as BS
+import Data.ByteString.Char8 as BS
 
 
 
 -- | State for import and export functions
 
 data AliGo = AliGo
-  { aliCM :: BS.ByteString
-  , aliScaffold :: BS.ByteString
+  { aliCM :: ByteString
+  , aliScaffold :: ByteString
   , aliStrand :: Char
+  , aliAnnotation :: [ByteString]
   } deriving (Show)
 
diff --git a/BiobaseInfernal.cabal b/BiobaseInfernal.cabal
--- a/BiobaseInfernal.cabal
+++ b/BiobaseInfernal.cabal
@@ -1,5 +1,5 @@
 name:           BiobaseInfernal
-version:        0.5.3.1
+version:        0.5.4.0
 author:         Christian Hoener zu Siederdissen
 maintainer:     choener@tbi.univie.ac.at
 homepage:       http://www.tbi.univie.ac.at/~choener/
@@ -15,6 +15,12 @@
                 Provides import and export facilities for Infernal/Rfam data
                 formats. We include Stockholm, CM, verbose Infernal results,
                 and tabulated Infernal results. Some small tools are included.
+                .
+                The VerboseHit format is slightly extended to allow simple
+                annotations. This extension should be backward-compatible with
+                standard-compliant parsers.
+                .
+                .
                 .
                 With the BioHaskell library split, this package is officially
                 back! And the package is not feature-complete yet, take the
