diff --git a/artemis_sqlmap/FeatureRelationship.xml b/artemis_sqlmap/FeatureRelationship.xml
index 0d9c4b81f591af4024347a01122203f114058619..81576641ee67d3f7e4860b9b40d98dee84498072 100644
--- a/artemis_sqlmap/FeatureRelationship.xml
+++ b/artemis_sqlmap/FeatureRelationship.xml
@@ -47,8 +47,7 @@
 
     <resultMap id="map-parent-relationship" class="FeatureRelationship">
 		<result property="featureRelationshipId" column="feature_relationship_id"/>
-        <result property="featureBySubjectId" column="subject_id" 
-			                                  select="getLazyFeatureById" />
+        <result property="featureBySubjectId.featureId" column="subject_id" />
         <!--<result property="featureByObjectId"  column="object_id"
 			                                  select="getLazyFeatureNameAndTypeById" />-->
 		<result property="featureByObjectId" resultMap="Feature.map-feature-name-lazy" />
diff --git a/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java b/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java
index 8f46c4aa746be51cec8ad750342e938759eb1d66..a784b77058bab4346a9b38f5bb5bfe7461f8ce37 100644
--- a/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java
+++ b/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java
@@ -106,10 +106,11 @@ public class ClusterLazyQualifierValue implements LazyQualifierValue
     final Document document = ((DocumentEntry)feature.getEntry()).getDocument();
     List allClusters = ((DatabaseDocument)document).getClustersByFeatureIds(clusterFeatureIds);
     
-    /*
+   
     // 
     // get parent gene
-    final List subjectIds = new Vector();
+    /*
+    List subjectIds = new Vector();
     for(int i=0;i<allClusters.size(); i++)
     {
       final Feature clusterFeature = (Feature)allClusters.get(i);
@@ -123,15 +124,62 @@ public class ClusterLazyQualifierValue implements LazyQualifierValue
       }
     }
     
-    final List geneFeatures = 
+    List geneFeatures = 
       ((DatabaseDocument)document).getParentFeaturesByChildFeatureIds(subjectIds);
+    final Hashtable genes = new Hashtable(geneFeatures.size());
+    subjectIds = new Vector();
+    for(int i=0; i<geneFeatures.size(); i++)
+    {
+      FeatureRelationship gene = (FeatureRelationship)geneFeatures.get(i);
 
+      if(gene.getFeatureByObjectId().getCvTerm().getName().equals("gene") ||
+         gene.getFeatureByObjectId().getCvTerm().getName().equals("pseudogene"))
+      {
+        genes.put(new Integer(gene.getFeatureBySubjectId().getFeatureId()), 
+                              gene.getFeatureByObjectId().getUniqueName());
+      }
+      else
+      {
+        Integer objectId = new Integer(gene.getFeatureByObjectId().getFeatureId());
+        subjectIds.add(objectId);
+        genes.put(new Integer(gene.getFeatureBySubjectId().getFeatureId()), objectId);
+      }
+    }
+    
+    geneFeatures = 
+      ((DatabaseDocument)document).getParentFeaturesByChildFeatureIds(subjectIds);
     for(int i=0; i<geneFeatures.size(); i++)
     {
       FeatureRelationship gene = (FeatureRelationship)geneFeatures.get(i);
-      System.out.println(i+" "+gene.getFeatureByObjectId().getUniqueName()+" "+
-                               gene.getFeatureByObjectId().getCvTerm().getName()+" "+
-                               gene.getFeatureByObjectId().getFeatureId());
+
+      if(gene.getFeatureByObjectId().getCvTerm().getName().equals("gene") ||
+         gene.getFeatureByObjectId().getCvTerm().getName().equals("pseudogene"))
+      {
+        Integer subjectId = new Integer(gene.getFeatureBySubjectId().getFeatureId());
+        
+        if(genes.containsValue(subjectId))
+        {
+          Enumeration keys = genes.keys();
+          while(keys.hasMoreElements())
+          {
+            Integer key = (Integer)keys.nextElement();
+            Object val = genes.get(key);
+            if(val instanceof Integer && subjectId.equals(val))
+              genes.put(key, gene.getFeatureByObjectId().getUniqueName());
+          }
+        }
+      }
+    }
+    
+    Enumeration keys = genes.keys();
+    while(keys.hasMoreElements())
+    {
+      Integer key = (Integer)keys.nextElement();
+      Object val = genes.get(key);
+      if(val instanceof String)
+      {
+        System.out.println(key.intValue()+"  "+val);
+      }
     }
     */