diff --git a/hshetl/entities.py b/hshetl/entities.py
index 681fa8ba92b93fe15b2f7f4cbb60a8d7c870449a..2f912d88fd371da8a824a5119f6b53c5ea5d1891 100644
--- a/hshetl/entities.py
+++ b/hshetl/entities.py
@@ -100,9 +100,8 @@ class Entity(AbstractRepository):
         container_identifier = self._hash(container_fields)
 
         if container_identifier in container:
-            rec = Record(join_identifier, self.properties, self.itervalues())
-            rec.load(container_fields, mapped_record, container)
-            container.container_collide(rec)
+            container.container_collide(join_identifier, self.properties, self.itervalues(),
+                                        container_fields, mapped_record, container)
             return
 
         if self.record_repository.has(join_identifier):
@@ -114,7 +113,8 @@ class Entity(AbstractRepository):
             self.record_repository.add(record)
             container.append(container_identifier)
         except DuplicatedSystemIdException:
-            container.join_collide(Record(join_identifier, self.properties, self.itervalues()))
+            container.join_collide(join_identifier, self.properties, self.itervalues(),
+                                   container_fields, mapped_record, container)
 
     def add(self, container):
         '''Adds the container to the entity and register it at all records'''
@@ -212,8 +212,15 @@ class Container(list):
             value = raw_value
         return (mapped_prop_name, value)
 
-    def container_collide(self, record):
+    def _create_collision_record(self, join_identifier, properties, containers, container_fields, mapped_record, container):
+        '''Create a record object, if there was a container or join collision.'''
+        rec = Record(join_identifier, properties, containers)
+        rec.load(container_fields, mapped_record, container)
+        return rec
+
+    def container_collide(self, join_identifier, properties, containers, container_fields, mapped_record, container):
         '''Add a container collisions or break.'''
+        record = self._create_collision_record(join_identifier, properties, containers, container_fields, mapped_record, container)
         if self.collision_handling == COLLISION_HANDLING_BREAKALL or \
            self.collision_handling == COLLISION_HANDLING_BREAKCONTAINER:
             msg = 'Collision in %s system detected! Aborting! %s found twice.' % (self.name, repr(record))
@@ -223,8 +230,9 @@ class Container(list):
             logging.warn(msg)
             self.collisions.append(record)
 
-    def join_collide(self, record):
+    def join_collide(self, join_identifier, properties, containers, container_fields, mapped_record, container):
         '''Add a join collisions or break.'''
+        record = self._create_collision_record(join_identifier, properties, containers, container_fields, mapped_record, container)
         if self.collision_handling == COLLISION_HANDLING_BREAKALL or \
            self.collision_handling == COLLISION_HANDLING_BREAKJOIN:
             msg = 'Collision in %s system detected! Aborting! %s found twice.' % (self.name, repr(record))
@@ -563,7 +571,7 @@ delete: {}
 unaltered: {}
 unknown: {}
 collsions: {}
-join_collosion: {}
+join_collisions: {}
 '''.format(len(self.insert), len(self.update), len(self.delete), len(self.unaltered), len(self.unknown), len(self.collisions), len(self.join_collisions))