diff --git a/src/Property.js b/src/Property.js
index 35137750dbf9af169a1ee7491bb636821343e668..946baf6ab2fb223eb0249e9a25bc524f72387202 100644
--- a/src/Property.js
+++ b/src/Property.js
@@ -37,23 +37,15 @@ function _getScalarValue(value) {
         return value.getBooleanValue();
     case valueCases.STRING_VALUE:
         return value.getStringValue();
+    case valueCases.SPECIAL_VALUE:
+        return value.getSpecialValue();
     default:
         throw `Unkown value type ${value.getScalarValueCase()}.`;
     }
 }
 
-function _getListValue(listDataType, values) {
-    const listCases = api.v1.ListDataType.ListDataTypeCase;
-    switch (listDataType.getListDataTypeCase()) {
-    case listCases.LIST_DATA_TYPE_NOT_SET:
-        return undefined;
-    case listCases.ATOMIC_DATA_TYPE:
-        return values.map(value => _getScalarValue(value));
-    case listCases.REFERENCE_DATA_TYPE:
-        return values.map(value => _getScalarValue(value));
-    default:
-        throw `Unknown list data type ${listDataType.getListDataTypeCase()}.`
-    }
+function _getListValue(values) {
+    return values.map(value => _getScalarValue(value));
 }
 
 export class Property {
@@ -80,19 +72,16 @@ export class Property {
             // Empty values are undefined regardless of data type
             return undefined;
         }
-        const wrappedDataType = this.wrappedProperty.getDataType();
-        const dtypeCases = api.v1.DataType.DataTypeCase;
-        switch (wrappedDataType.getDataTypeCase()) {
-        case dtypeCases.DATA_TYPE_NOT_SET:
+        const valueCases = api.v1.Value.ValueCase;
+        switch (wrappedValue.getValueCase()) {
+        case valueCases.VALUE_NOT_SET:
             return undefined;
-        case dtypeCases.ATOMIC_DATA_TYPE:
-            return _getScalarValue(wrappedValue.getScalarValue());
-        case dtypeCases.LIST_DATA_TYPE:
-            return _getListValue(wrappedDataType.getListDataType(), wrappedValue.getListValues().getValuesList());
-        case dtypeCases.REFERENCE_DATA_TYPE:
+        case valueCases.SCALAR_VALUE:
             return _getScalarValue(wrappedValue.getScalarValue());
+        case valueCases.LIST_VALUES:
+            return _getListValue(wrappedValue.getListValues().getValuesList());
         default:
-            throw `Unknown data type ${wrappedDataType.getDataTypeCase()}.`;
+            throw `Unknown value type ${wrappedValue.getValueCase()}.`;
         }
     }