diff --git a/modules/Bio/EnsEMBL/Analysis.pm b/modules/Bio/EnsEMBL/Analysis.pm
index 88b157206ee9372868d986b2a5590e3fcaeb42d4..16ebe373e1a633534aeb7267ccae736e9355b433 100755
--- a/modules/Bio/EnsEMBL/Analysis.pm
+++ b/modules/Bio/EnsEMBL/Analysis.pm
@@ -31,7 +31,9 @@ Bio::EnsEMBL::Analysis.pm - Stores details of an analysis run
         -module          => $module,
         -module_version  => $module_version,
         -parameters      => $parameters,
-        -created         => $created
+        -created         => $created,
+        -desccription    => 'some warm words about this analysis'
+	-display_label   => 'UNIprot alignment'
         );
 
 =head1 DESCRIPTION
@@ -91,7 +93,7 @@ sub new {
    
   my ($id, $adaptor, $db, $db_version, $db_file, $program, $program_version,
       $program_file, $gff_source, $gff_feature, $module, $module_version,
-      $parameters, $created, $logic_name ) = 
+      $parameters, $created, $logic_name, $description, $display_label ) = 
 
 	  rearrange([qw(ID
 	  			ADAPTOR
@@ -108,6 +110,8 @@ sub new {
 				PARAMETERS
 				CREATED
 				LOGIC_NAME
+			        DESCRIPTION
+                                DISPLAY_LABEL
 				)],@args);
 
   $self->dbID             ($id);
@@ -125,7 +129,8 @@ sub new {
   $self->parameters     ($parameters);
   $self->created        ($created);
   $self->logic_name ( $logic_name );
-
+  $self->description( $description );
+  $self->display_label( $display_label );
   return $self; # success - we hope!
 }
 
@@ -437,6 +442,49 @@ sub has_database{
 }
 
 
+=head2 description
+
+  Arg [1]    : string $description
+  Example    : none
+  Description: get/set for attribute description
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+
+=cut
+
+sub description {
+    my ($self,$arg) = @_;
+
+    if (defined($arg)) {
+	$self->{_description} = $arg;
+    }
+
+    return $self->{_description};
+}
+
+
+=head2 display_label
+
+  Arg [1]    : string $display_label
+  Example    : none
+  Description: get/set for attribute display_label
+  Returntype : string
+  Exceptions : none
+  Caller     : general
+
+=cut
+
+sub display_label {
+    my ($self,$arg) = @_;
+
+    if (defined($arg)) {
+	$self->{_display_label} = $arg;
+    }
+
+    return $self->{_display_label};
+}
+
 =head2 compare
 
   Arg  1     : Bio::EnsEMBL::Analysis $ana
diff --git a/modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm
index 74914a2d960f9518f8e246d97ca70df206e9a2f2..83e7633898576df0dc649856635cbb8014fab1c2 100755
--- a/modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm
@@ -96,13 +96,15 @@ sub fetch_all {
   $self->{_logic_name_cache} = {};
 
   my $sth = $self->prepare( q {
-    SELECT analysis_id, logic_name,
+    SELECT analysis.analysis_id, logic_name,
            program, program_version, program_file,
            db, db_version, db_file,
            module, module_version,
            gff_source, gff_feature,
-           created, parameters
-    FROM   analysis } );
+           created, parameters, description, display_label
+    FROM   analysis
+    LEFT JOIN analysis_description
+    ON analysis.analysis_id = analysis_description.analysis_id } );
   $sth->execute;
 
   while( $rowHashRef = $sth->fetchrow_hashref ) {
@@ -209,14 +211,16 @@ sub fetch_by_dbID {
   }
 
   my $query = q{
-    SELECT analysis_id, logic_name,
+    SELECT analysis.analysis_id, logic_name,
            program, program_version, program_file,
            db, db_version, db_file,
            module, module_version,
            gff_source, gff_feature,
-           created, parameters
+           created, parameters, description, display_label
     FROM   analysis
-    WHERE  analysis_id = ? };
+    LEFT JOIN analysis_description
+    ON analysis.analysis_id = analysis_description.analysis_id
+    WHERE  analysis.analysis_id = ? };
 
   my $sth = $self->prepare($query);
   $sth->execute( $id );
@@ -256,13 +260,15 @@ sub fetch_by_logic_name {
   }
 
   my $sth = $self->prepare( "
-    SELECT analysis_id, logic_name,
+    SELECT analysis.analysis_id, logic_name,
            program, program_version, program_file,
            db, db_version, db_file,
            module, module_version,
            gff_source, gff_feature,
-           created, parameters
+           created, parameters, description, display_label
     FROM   analysis
+    LEFT JOIN analysis_description
+    ON analysis.analysis_id = analysis_description.analysis_id
     WHERE  logic_name = ?" );
 
   $sth->execute($logic_name);
@@ -339,7 +345,9 @@ sub store {
           module = ?,
           module_version = ?,
           gff_source = ?,
-          gff_feature = ? } );
+          gff_feature = ?
+
+			    } );
     $rows_inserted = $sth->execute
       ( $analysis->created,
         $analysis->logic_name,
@@ -371,7 +379,8 @@ sub store {
           module = ?,
           module_version = ?,
           gff_source = ?,
-          gff_feature = ? } );
+          gff_feature = ?
+	 } );
 
     $rows_inserted = $sth->execute
       ( $analysis->logic_name,
@@ -385,7 +394,7 @@ sub store {
         $analysis->module,
         $analysis->module_version,
         $analysis->gff_source,
-        $analysis->gff_feature
+        $analysis->gff_feature,
       );
   }
 
@@ -405,11 +414,22 @@ sub store {
 
     $dbID = $new_analysis->dbID();
     $analysis->created($new_analysis->created());
+    $sth->finish();
   } else {
     $dbID = $sth->{'mysql_insertid'};
+    $sth->finish();
+
+    # store desccription and display_label so they are there 
+    if( defined( $analysis->description() ) ||
+	defined( $analysis->display_label() )) {
+      $sth = $self->prepare( "INSERT IGNORE INTO TABLE analysis_description ".
+			     "SET analysis_id = ?, display_label = ?, ".
+			     "    description = ? " );
+      $sth->execute( $dbID, $analysis->display_label(), $analysis->description() );
+      $sth->finish();
+    }
   }
 
-  $sth->finish();
 
   $self->{_cache}->{$dbID} = $analysis;
   $self->{_logic_name_cache}{lc($analysis->logic_name)} = $analysis;
@@ -450,14 +470,14 @@ sub update {
      "SET created = ?, logic_name = ?, db = ?, db_version = ?, db_file = ?, ".
      "    program = ?, program_version = ?, program_file = ?,  ".
      "    parameters = ?, module = ?, module_version = ?, ".
-     "    gff_source = ?, gff_feature = ? " .
+     "    gff_source = ?, gff_feature = ?, description = ? " .
      "WHERE analysis_id = ?");
 
   $sth->execute
     ($a->created, $a->logic_name, $a->db, $a->db_version, $a->db_file,
      $a->program, $a->program_version, $a->program_file,
      $a->parameters, $a->module, $a->module_version,
-     $a->gff_source, $a->gff_feature,
+     $a->gff_source, $a->gff_feature,$a->description,
      $a->dbID);
 
   $sth->finish();
@@ -586,7 +606,9 @@ sub _objFromHashref {
       -module_version  => $rowHash->{module_version},
       -parameters      => $rowHash->{parameters},
       -created         => $rowHash->{created},
-      -logic_name      => $rowHash->{logic_name}
+      -logic_name      => $rowHash->{logic_name},
+      -description     => $rowHash->{description},
+      -display_label   => $rowHash->{display_label}
     );
 
   return $analysis;