diff --git a/src/Property.js b/src/Property.js
index 27f1d3d9a97fede44b620f958d9663a4823c3df2..0959d5a7a8f0a660e950d6e146dda751ef64198e 100644
--- a/src/Property.js
+++ b/src/Property.js
@@ -70,9 +70,13 @@ export class Property {
         return this.wrappedProperty.getId();
     }
 
+    getUnit() {
+        return this.wrappedProperty.getUnit();
+    }
+
     getValue() {
         const wrappedValue = this.wrappedProperty.getValue();
-        if (value === undefined) {
+        if (wrappedValue === undefined) {
             // Empty values are undefined regardless of data type
             return undefined;
         }
@@ -84,11 +88,21 @@ export class Property {
         case dtypeCases.ATOMIC_DATA_TYPE:
             return _getScalarValue(wrappedValue.getScalarValue());
         case dtypeCases.LIST_DATA_TYPE:
-            return _getListValue(wrappedDataType.getListDataTypeCase(), wrappedValue.getListValues().getValuesList());
+            return _getListValue(wrappedDataType.getListDataType(), wrappedValue.getListValues().getValuesList());
         case dtypeCases.REFERENCE_DATA_TYPE:
             return _getScalarValue(wrappedValue.getScalarValue());
         default:
-            throw `Unkown data type ${wrappedDataType.getDataTypeCase()}.`;
+            throw `Unknown data type ${wrappedDataType.getDataTypeCase()}.`;
         }
     }
+
+    isReference() {
+        const wrappedDataType = this.wrappedProperty.getDataType()
+        const dtypeCase = wrappedDataType.getDataTypeCase();
+        return (
+            (dtypeCase === api.v1.DataType.DataTypeCase.REFERENCE_DATA_TYPE) ||
+            (dtypeCase === api.v1.DataType.DataTypeCase.LIST_DATA_TYPE &&
+                wrappedDataType.getListDataType().getListDataTypeCase() === api.v1.ListDataType.ListDataTypeCase.REFERENCE_DATA_TYPE)
+        );
+    }
 }