diff --git a/blixem_.h b/blixem_.h
index fa8ac4361f8c1a7b619c1b3b5fde2ca6d3ca1878..130c9ca2a2b48ac114a30b68617cbbf6aa56de53 100644
--- a/blixem_.h
+++ b/blixem_.h
@@ -26,7 +26,7 @@
  * HISTORY:
  * Last edited: Aug 26 09:09 2009 (edgrif)
  * Created: Thu Nov 29 10:59:09 2001 (edgrif)
- * CVS info:   $Id: blixem_.h,v 1.52 2010-08-26 12:18:15 gb10 Exp $
+ * CVS info:   $Id: blixem_.h,v 1.53 2010-10-05 17:40:20 gb10 Exp $
  *-------------------------------------------------------------------
  */
 #ifndef DEF_BLIXEM_P_H
@@ -342,7 +342,7 @@ char*                              revComplement(char *comp, char *seq) ;
 
 /* Create/destroy sequences and MSPs */
 MSP*                               createNewMsp(MSP **lastMsp, MSP **mspList, GList **seqList, const BlxMspType mspType, char *source, const gdouble score, const int phase,
-                                                char *idTag, char *qName, const int qStart, const int qEnd, const BlxStrand qStrand, const int qFrame, 
+                                                char *url, char *idTag, char *qName, const int qStart, const int qEnd, const BlxStrand qStrand, const int qFrame, 
                                                 char *sName, const int sStart, const int sEnd, const BlxStrand sStrand, char *sequence, 
                                                 char *opts, GError **error);  
 
diff --git a/blxGff3Parser.c b/blxGff3Parser.c
index ee645d6a7c4b4c6974fe8f975b068c5cedd12cf4..d89bd5b7c4446d36a29cb7257c95f549be6695bc 100644
--- a/blxGff3Parser.c
+++ b/blxGff3Parser.c
@@ -53,6 +53,7 @@ typedef struct _BlxGffData
     /* standard fields */
     char *qName;	/* ref seq name */
     char *source;	/* source */
+    char *url;          /* URL */
     BlxMspType mspType;	/* type */
     int qStart;		/* start coord on the ref seq */
     int qEnd;		/* end coord on the ref seq */
@@ -268,6 +269,7 @@ static void createBlixemObject(BlxGffData *gffData,
 			      gffData->source,
 			      gffData->score, 
                               gffData->phase,
+                              gffData->url,
 			      idTag,
 			      gffData->qName, 
 			      gffData->qStart, 
@@ -319,7 +321,7 @@ void parseGff3Body(const int lineNum,
   DEBUG_ENTER("parseGff3Body [line=%d]", lineNum);
   
   /* Parse the data into a temporary struct */
-  BlxGffData gffData = {NULL, NULL, BLXMSP_INVALID, UNSET_INT, UNSET_INT, UNSET_INT, BLXSTRAND_NONE, UNSET_INT,
+  BlxGffData gffData = {NULL, NULL, NULL, BLXMSP_INVALID, UNSET_INT, UNSET_INT, UNSET_INT, BLXSTRAND_NONE, UNSET_INT,
 			NULL, BLXSTRAND_NONE, UNSET_INT, UNSET_INT, NULL, NULL, NULL, NULL};
 		      
   GError *error = NULL;
@@ -556,10 +558,6 @@ static void parseTagDataPair(char *text,
         {
           parseTargetTag(tokens[1], lineNum, seqList, gffData, &tmpError);
         }
-      else if (!strcmp(tokens[0], "sequence"))
-        {
-          gffData->sequence = g_strdup(tokens[1]);
-        }
       else if (!strcmp(tokens[0], "Gap") || !strcmp(tokens[0], "Gaps")) /* to do: get rid of "Gaps" once zmap starts supporting the correct keyword "Gap" */
         {
           gffData->gapString = g_strdup(tokens[1]);
@@ -572,6 +570,14 @@ static void parseTagDataPair(char *text,
         {
 	  gffData->parentIdTag = g_strdup(tokens[1]);
         }
+      else if (!strcmp(tokens[0], "sequence"))
+        {
+          gffData->sequence = g_strdup(tokens[1]);
+        }
+      else if (!strcmp(tokens[0], "url"))
+        {
+          gffData->url = g_strdup(tokens[1]);
+        }
       else
         {
           DEBUG_OUT("Unknown tag: ignorning.\n");
diff --git a/blxparser.c b/blxparser.c
index c02b059369558d2b04f4643152cf0aa878bdeeb4..7ae5f9d3c33f3bcae3f7b7dba9d18210863239f7 100644
--- a/blxparser.c
+++ b/blxparser.c
@@ -34,7 +34,7 @@
  * * 98-02-19  Changed MSP parsing to handle all SFS formats.
  * * 99-07-29  Added support for SFS type=HSP and GFF.
  * Created: 93-05-17
- * CVS info:   $Id: blxparser.c,v 1.39 2010-10-05 15:51:21 gb10 Exp $
+ * CVS info:   $Id: blxparser.c,v 1.40 2010-10-05 17:40:20 gb10 Exp $
  *-------------------------------------------------------------------
  */
 
@@ -556,7 +556,7 @@ static void parseEXBLXSEQBL(MSP **lastMsp, MSP **mspList, BlxParserState parserS
   /* Create the new MSP */
   GError *error = NULL;
   
-  MSP *msp = createNewMsp(lastMsp, mspList, seqList, mspType, NULL, score, UNSET_INT,
+  MSP *msp = createNewMsp(lastMsp, mspList, seqList, mspType, NULL, score, UNSET_INT, NULL,
                           NULL, NULL, qStart, qEnd, qStrand, qFrame,
                           sName, sStart, sEnd, BLXSTRAND_FORWARD, NULL,
                           opts, &error);
@@ -791,7 +791,7 @@ static void parseEXBLXSEQBLExtended(MSP **lastMsp, MSP **mspList, BlxParserState
   /* Create the new MSP */
   GError *error = NULL;
   
-  MSP *msp = createNewMsp(lastMsp, mspList, seqList, mspType, NULL, score, UNSET_INT,
+  MSP *msp = createNewMsp(lastMsp, mspList, seqList, mspType, NULL, score, UNSET_INT, NULL,
                           NULL, NULL, qStart, qEnd, qStrand, qFrame, 
                           sName, sStart, sEnd, sStrand, NULL,
                           opts, &error);
@@ -1399,7 +1399,7 @@ static void parseFsHsp(char *line, char *opts, MSP **lastMsp, MSP **mspList, GLi
   /* Create the new MSP */
   GError *error = NULL;
 
-  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_HSP, NULL, score, UNSET_INT,
+  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_HSP, NULL, score, UNSET_INT, NULL,
                            NULL, qName, qStart, qEnd, qStrand, qFrame, 
                            sName, sStart, sEnd, sStrand, sSeq,
                            opts, &error);
@@ -1451,7 +1451,7 @@ static void parseFsSeg(char *line, char *opts, MSP **lastMsp, MSP **mspList, GLi
   /* Create the new MSP */
   GError *error = NULL;
   
-  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_FS_SEG, NULL, UNSET_INT, UNSET_INT,
+  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_FS_SEG, NULL, UNSET_INT, UNSET_INT, NULL,
                           NULL, qName, qStart, qEnd, BLXSTRAND_NONE, 1, 
                           series, qStart, qEnd, BLXSTRAND_NONE, NULL,
                           opts, &error);
@@ -1501,7 +1501,7 @@ static void parseFsGff(char *line, char *opts, MSP **lastMsp, MSP **mspList, GLi
   /* Create the new MSP */
   GError *error = NULL;
   
-  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_FS_SEG, NULL, score, UNSET_INT,
+  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_FS_SEG, NULL, score, UNSET_INT, NULL,
                           NULL, qName, qStart, qEnd, qStrand, qFrame, 
                           series, qStart, qEnd, BLXSTRAND_FORWARD, NULL,
                           opts, &error);
@@ -1567,7 +1567,7 @@ static void parseFsXyHeader(char *line, char *opts, MSP **lastMsp, MSP **mspList
   /* Create an MSP to put the data in */
   GError *error = NULL;
   
-  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_XY_PLOT, NULL, 0, UNSET_INT,
+  MSP *msp = createNewMsp(lastMsp, mspList, seqList, BLXMSP_XY_PLOT, NULL, 0, UNSET_INT, NULL,
                           NULL, qName, UNSET_INT, UNSET_INT, BLXSTRAND_FORWARD, 1,
                           series, UNSET_INT, UNSET_INT, BLXSTRAND_FORWARD, NULL, 
                           opts, &error);
diff --git a/blxview.c b/blxview.c
index 86fce988184c3314ecd92034cd082cc11c7d8a4e..971ec9febbfb4c68f3c7876b1330bb950d23a177 100644
--- a/blxview.c
+++ b/blxview.c
@@ -88,7 +88,7 @@
 01-10-05	Added getsseqsPfetch to fetch all missing sseqs in one go via socket connection to pfetch [RD]
 
  * Created: Thu Feb 20 10:27:39 1993 (esr)
- * CVS info:   $Id: blxview.c,v 1.74 2010-10-05 15:51:21 gb10 Exp $
+ * CVS info:   $Id: blxview.c,v 1.75 2010-10-05 17:40:20 gb10 Exp $
  *-------------------------------------------------------------------
  */
 
@@ -1019,7 +1019,7 @@ static void createMissingExonCdsUtr(MSP **exon, MSP **cds, MSP **utr,
       
       GError *tmpError = NULL;
       
-      *ptrToUpdate = createNewMsp(lastMsp, mspList, seqList, newType, NULL, 0,  newPhase, blxSeq->idTag,
+      *ptrToUpdate = createNewMsp(lastMsp, mspList, seqList, newType, NULL, 0,  newPhase, NULL, blxSeq->idTag,
                                   NULL, newStart, newEnd, blxSeq->strand, UNSET_INT, blxSeq->fullName,
                                   UNSET_INT, UNSET_INT, blxSeq->strand, NULL, opts, &tmpError);
       
@@ -1116,7 +1116,7 @@ static void constructTranscriptData(BlxSequence *blxSeq, MSP **lastMsp, MSP **ms
               
               if (newRange.min != UNSET_INT && newRange.max != UNSET_INT)
                 {
-                  createNewMsp(lastMsp, mspList, seqList, BLXMSP_INTRON, NULL, UNSET_INT, UNSET_INT, blxSeq->idTag,
+                  createNewMsp(lastMsp, mspList, seqList, BLXMSP_INTRON, NULL, UNSET_INT, UNSET_INT, NULL, blxSeq->idTag,
                               NULL, newRange.min, newRange.max, blxSeq->strand, UNSET_INT, blxSeq->fullName,
                               UNSET_INT, UNSET_INT, blxSeq->strand, NULL, opts, &tmpError);
               
@@ -1429,6 +1429,7 @@ MSP* createNewMsp(MSP **lastMsp,
 		  char *source,
                   const gdouble score,
                   const int phase,
+                  char *url,
 		  char *idTag,
                   char *qName,
                   const int qStart,
@@ -1449,6 +1450,7 @@ MSP* createNewMsp(MSP **lastMsp,
   msp->score = score; 
   msp->source = source;
   msp->phase = phase;
+  msp->url = url;
   
   msp->qname = qName;
   
@@ -1501,6 +1503,7 @@ static MSP* createEmptyMsp(MSP **lastMsp, MSP **mspList)
   msp->score = 0.0;
   msp->id = 0.0;
   msp->phase = UNSET_INT;
+  msp->url = NULL;
   
   msp->qname = NULL;
   msp->qFrame = UNSET_INT;
diff --git a/blxview.h b/blxview.h
index 97b7ae4565b6b7b024cdcbb07f1149ffe1bbfaff..fc7885b37dc34d319e2d5e69732260700faa2391 100644
--- a/blxview.h
+++ b/blxview.h
@@ -27,7 +27,7 @@
  * Last edited: Aug 21 13:57 2009 (edgrif)
  * * Aug 26 16:57 1999 (fw): added this header
  * Created: Thu Aug 26 16:57:17 1999 (fw)
- * CVS info:   $Id: blxview.h,v 1.38 2010-10-05 15:51:21 gb10 Exp $
+ * CVS info:   $Id: blxview.h,v 1.39 2010-10-05 17:40:20 gb10 Exp $
  *-------------------------------------------------------------------
  */
 #ifndef DEF_BLXVIEW_H
@@ -243,6 +243,7 @@ typedef struct _MSP
   gdouble           score;         /* Score as a percentage. Technically this should be a weighted score taking into account gaps, length of the match etc., but for unknown reasons the ID has always been passed instead of score and the ID gets stored in here */
   gdouble           id;            /* Identity as a percentage. A simple comparison of bases within the match, ignoring gaps etc. Currently this is calculated internally by blixem. */
   int               phase;         /* phase: q start coord is offset by this amount to give the first base in the first complete codon (only relevant to CDSs) */
+  char              *url;          /* link to more info about the MSP, if relevant */
 
   char              *qname;        /* For Dotter, the MSP can belong to either sequence */
   char              qframe[8];     /* obsolete - use qFrame and qStrand instead */
diff --git a/detailview.c b/detailview.c
index 7915407daa76d331370877daa16231d72b028145..dd0593db3627e64ccda4d2f0c6be3f6b7830f7e0 100755
--- a/detailview.c
+++ b/detailview.c
@@ -826,18 +826,23 @@ static char* getFeedbackText(GtkWidget *detailView, const BlxSequence *seq, cons
 	{
 	  g_string_append_printf(resultString, "%s", seqName);
 	}
+        
+      if (seq->type == BLXSEQUENCE_VARIATION && seq->sequence && seq->sequence->str)
+        {
+          g_string_append_printf(resultString, " : %s", seq->sequence->str);
+        }
     }
   else if (qIdx != UNSET_INT)
     {
       g_string_append_printf(resultString, "%s", noSeqText); 
     }
     
-  if (sLen != UNSET_INT)
+  if (sLen != UNSET_INT && (!seq || seq->type != BLXSEQUENCE_VARIATION))
     {
       g_string_append_printf(resultString, "(%d)", sLen);
     }
 
-  if (sIdx != UNSET_INT)
+  if (sIdx != UNSET_INT && (!seq || seq->type != BLXSEQUENCE_VARIATION))
     {
       g_string_append_printf(resultString, " : %d", sIdx);
     }