diff --git a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
index 834d19c86ef1b296b9b8c5ddc6e7363af890b563..6da6d094b9895b7b58b7edf33ff060e4380be92f 100644
--- a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
+++ b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
@@ -112,14 +112,9 @@ public class ChadoTransactionManager
       }
       else if(event.getType() == event.ALL_CHANGED)
       {
-        System.out.println("OLD");
-        System.out.println(getQualifierString(event.getOldQualifiers()));
-        System.out.println("NEW");
-        System.out.println(getQualifierString(event.getNewQualifiers()));
-
         System.out.println("ALL_CHANGED");
         
-        getUpdateQualifiers(event.getOldQualifiers(),event.getNewQualifiers(),feature);
+        editQualifiers(event.getOldQualifiers(),event.getNewQualifiers(),feature);
       }
     }
   }
@@ -155,8 +150,8 @@ public class ChadoTransactionManager
   }
 
 
-  private void getUpdateQualifiers(QualifierVector qualifiers_old, 
-                                   QualifierVector qualifiers_new, GFFStreamFeature feature)
+  private void editQualifiers(QualifierVector qualifiers_old, 
+                              QualifierVector qualifiers_new, GFFStreamFeature feature)
   {
   
     String feature_id = feature.getQualifierByName("ID").getValues().elementAt(0);
@@ -184,6 +179,7 @@ public class ChadoTransactionManager
         final StringVector new_qualifier_strings =
                      StreamQualifier.toStringVector(null, this_qualifier);
 
+        // get the cvterm_id for this featureprop/qualifier
         String cvterm_id = DatabaseDocument.getCvtermID(name).toString();
 
         if(cvterm_id == null)   // chado doesn't recognise this
@@ -196,24 +192,33 @@ public class ChadoTransactionManager
         }
  
         if(old_index > -1 &&
-           new_qualifier_strings.size() == 1 &&
-           old_qualifier_strings.size() == 1)
+           new_qualifier_strings.size() == old_qualifier_strings.size())
         {
-          tsn = new ChadoTransaction(ChadoTransaction.UPDATE,
-                                     feature_id, "featureprop");
+    
+          // UPDATE existing featureprop's
+    
+          for(int value_index = 0; value_index < new_qualifier_strings.size();
+              ++value_index)
+          {
+            tsn = new ChadoTransaction(ChadoTransaction.UPDATE,
+                                       feature_id, "featureprop");
+            String qualifier_string = new_qualifier_strings.elementAt(value_index);
+            int index = qualifier_string.indexOf("=");
+            if(index > -1)
+              qualifier_string = qualifier_string.substring(index+1);
 
-          String qualifier_string = new_qualifier_strings.elementAt(0);
-          int index = qualifier_string.indexOf("=");
-          if(index > -1)
-            qualifier_string = qualifier_string.substring(index+1);
+            tsn.addProperty("value", "'"+ stripQuotes(qualifier_string) +"'");
+            tsn.setConstraint("featureprop.type_id", "'"+cvterm_id+"'");
+            tsn.setConstraint("rank", Integer.toString(value_index));
+            sql.add(tsn);
+            System.out.println(tsn.getSqlQuery());
+          }
 
-          tsn.addProperty("value", "'"+ stripQuotes(qualifier_string) +"'");
-          tsn.setConstraint("featureprop.type_id", cvterm_id);
-          sql.add(tsn);
         }
         else
         {
-          if(old_index > -1)   // delete existing featureprops
+      
+          if(old_index > -1)   // DELETE existing featureprops
           {
             tsn = new ChadoTransaction(ChadoTransaction.DELETE,
                                        feature_id, "featureprop");
@@ -223,7 +228,7 @@ public class ChadoTransactionManager
             System.out.println(tsn.getSqlQuery());
           }
           
-          // insert new featureprops
+          // INSERT new featureprops
           for(int value_index = 0; value_index < new_qualifier_strings.size();
               ++value_index)
           {