I would like to suggest that AtomUpdateItem should take as a parameter a GtkTreeIter, then AtomUpdate can take as input an atom, find it's corresponding iterator, then call AtomUpdateItem. In this way we can alleviate the O(n^2) we're getting when calling AtomUpdateAllItems. Also, i think it's a good idea to add a hidden G_POINTER_TYPE column so that rather than having to iterate through the gpv_atom_records when we have a selected row, we can simply use that hidden field to give us a pointer to our record. (linking both ways). I'll make the changes but just want to get some input from the list before doing work noone will be happy with. It might also be slightly pointless with version 3 in mind.