diff --git a/src/caosdb/high_level_api.py b/src/caosdb/high_level_api.py
index 50d7952167dc6657cecd1e9d45d5e1b8761fde44..001fe9a240e7a9dcc2d8647bce4538213dc56546 100644
--- a/src/caosdb/high_level_api.py
+++ b/src/caosdb/high_level_api.py
@@ -270,6 +270,21 @@ class CaosDBPythonRecordType(CaosDBPythonEntity):
 class CaosDBPythonProperty(CaosDBPythonEntity):
     pass
 
+class CaosDBPythonParent(object):
+    """
+    Parents can be either given by name or by ID.
+
+    When resolved, both fields should be set.
+    """
+
+    def __init__(self, id=None, name=None):
+        self.id = id
+        self.name = name
+
+class CaosDBPythonUnresolvedReference(object):
+
+    def __init__(self, id=None):
+        self.id = id
 
 class CaosDBPythonFile(CaosDBPythonEntity):
     def get_File(self, target=None):
@@ -311,16 +326,10 @@ def _single_convert_to_entity(entity, robj, recursive_depth, **kwargs):
     children = []
 
     for parent in robj._parents:
-        if sys.version_info[0] < 3:
-            if hasattr(parent, "encode"):
-                entity.add_parent(name=parent)
-            else:
-                entity.add_parent(id=parent)
+        if hasattr(parent, "encode"):
+            entity.add_parent(name=parent)
         else:
-            if hasattr(parent, "encode"):
-                entity.add_parent(name=parent)
-            else:
-                entity.add_parent(id=parent)
+            entity.add_parent(id=parent)
 
     def add_property(entity, prop, name, _recursive=False, datatype=None):
         if datatype is None: