diff --git a/nomad/datamodel/data.py b/nomad/datamodel/data.py
index 6fcfd9080d6d3e8a3110a70a450358dc5ff6fc95..f5aa652d28a6078ce830b89358cd6dcbe51054dd 100644
--- a/nomad/datamodel/data.py
+++ b/nomad/datamodel/data.py
@@ -208,7 +208,7 @@ class UserReference(Reference):
         return value.user_id
 
 
-user_reference = UserReference()
+user_reference = UserReference
 
 
 class AuthorReference(Reference):
@@ -233,7 +233,7 @@ class AuthorReference(Reference):
         raise ValueError(f'Cannot serialize {value}.')
 
 
-author_reference = AuthorReference()
+author_reference = AuthorReference
 
 
 class Query(JSON):
diff --git a/nomad/metainfo/metainfo.py b/nomad/metainfo/metainfo.py
index 2cf68748a7077447ecd92e2d7be5101e697a5c31..83a20b3094eb49c78e119ab6c9342e7d7c8dd349 100644
--- a/nomad/metainfo/metainfo.py
+++ b/nomad/metainfo/metainfo.py
@@ -479,8 +479,10 @@ class Reference:
     def _check_shape(self, value):
         dimension: int = 0
         target = value
-        while isinstance(target, list) and len(target) > 0:
+        while isinstance(target, list):
             dimension += 1
+            if len(target) == 0:
+                break
             # assuming consistent data
             target = target[0]