diff --git a/aaf2/aaf.py b/aaf2/aaf.py
index <HASH>..<HASH> 100644
--- a/aaf2/aaf.py
+++ b/aaf2/aaf.py
@@ -53,7 +53,8 @@ class AAFFactory(object):
         obj.root = self.root
         obj.__init__(*args, **kwargs)
 
-        if isinstance(obj, AAFObject):
+        # if a helper class is not found set class_id
+        if type(obj) is AAFObject:
             obj.class_id = classdef.uuid
 
         return obj
diff --git a/aaf2/core.py b/aaf2/core.py
index <HASH>..<HASH> 100644
--- a/aaf2/core.py
+++ b/aaf2/core.py
@@ -221,7 +221,8 @@ class AAFObject(object):
         # new_obj = self.__class__(self.root)
         new_obj = self.__class__.__new__(self.__class__)
         new_obj.root = self.root
-        new_obj.class_id = self.class_id
+        if type(new_obj) is AAFObject:
+            new_obj.class_id = self.class_id
         new_obj.dir = new_dir
         new_obj.dir.class_id = self.class_id
only set class_id if object is a AAFObject