diff --git a/xos/core/models/attic/xosbase_header.py b/xos/core/models/attic/xosbase_header.py
index 9cb7348..b3efde4 100644
--- a/xos/core/models/attic/xosbase_header.py
+++ b/xos/core/models/attic/xosbase_header.py
@@ -113,8 +113,14 @@
 
     @property
     def changed_fields(self):
+        if self.is_new:
+            return self._dict.keys()
         return self.diff.keys()
 
+    @property
+    def is_new(self):
+        return self.pk is None
+
     def has_field_changed(self, field_name):
         return field_name in self.diff.keys()
 
@@ -233,21 +239,6 @@
 
     def push_redis_event(self):
         # Transmit update via Redis
-        changed_fields = []
-
-        if self.pk is not None:
-            my_model = type(self)
-            try:
-                orig = my_model.objects.get(pk=self.pk)
-
-                for f in my_model._meta.fields:
-                    oval = getattr(orig, f.name)
-                    nval = getattr(self, f.name)
-                    if oval != nval:
-                        changed_fields.append(f.name)
-            except:
-                changed_fields.append('__lookup_error')
-
         try:
             r = redis.Redis("redis")
             # NOTE the redis event has been extended with model properties to facilitate the support of real time notification in the UI
@@ -257,10 +248,11 @@
             # bases = [x for x in bases if issubclass(x, XOSBase)]
             class_names = ",".join([x.__name__ for x in bases])
             model['class_names'] = class_names
-            payload = json.dumps({'pk': self.pk, 'changed_fields': changed_fields, 'object': model}, default=date_handler)
+            payload = json.dumps({'pk': self.pk, 'changed_fields': self.changed_fields, 'object': model}, default=date_handler)
             r.publish(self.__class__.__name__, payload)
         except ConnectionError:
             # Redis not running.
+            # TODO add log statement
             pass
 
 # For cascading deletes, we need a Collector that doesn't do fastdelete,
