diff --git a/gcal_sync/sync.py b/gcal_sync/sync.py
index cb7a7ae..79f62eb 100644
--- a/gcal_sync/sync.py
+++ b/gcal_sync/sync.py
@@ -39,20 +39,18 @@ class CalendarSync():
         keys_to_update = keys_src & keys_dst
         keys_to_delete = keys_dst - keys_src
 
-        def get_item(items, key_val):
-            for item in filter(lambda item: item[key] == key_val, items):
-                return item
-
         def items_by_keys(items, key_name, keys):
             return list(filter(lambda item: item[key_name] in keys, items))
-        
+
         items_to_insert = items_by_keys(items_src, key, keys_to_insert)
         items_to_delete = items_by_keys(items_dst, key, keys_to_delete)
 
-        items_to_update = []
-        for key_val in keys_to_update:
-            items_to_update.append( (get_item(items_src, key_val), get_item(items_dst, key_val)) )
-        
+        to_upd_src = items_by_keys(items_src, key, keys_to_update)
+        to_upd_dst = items_by_keys(items_dst, key, keys_to_update)
+        to_upd_src.sort(key=get_key)
+        to_upd_dst.sort(key=get_key)
+        items_to_update = list(zip(to_upd_src, to_upd_dst))
+
         return items_to_insert, items_to_update, items_to_delete
 
     def _filter_events_to_update(self):