diff --git a/src/caoscrawler/converters/converters.py b/src/caoscrawler/converters/converters.py
index 5e9f172e1d08ecf6cb9590db2de307c1bf453b18..a8b7e918d234f41a9e3d967048dab8ad17596416 100644
--- a/src/caoscrawler/converters/converters.py
+++ b/src/caoscrawler/converters/converters.py
@@ -170,8 +170,10 @@ Parameters
 
 value: Union[dict, str, list]
   - If *str*, the value to be interpreted. E.g. "4", "hello" or "$a" etc.
-  - If *dict*, must have keys ``value`` and ``collection_mode``. The returned tuple is directly
-    created from the corresponding values.
+  - If *dict*, it must have a ``value`` key and may ``unit``, and
+    ``collection_mode``. The returned tuple is directly created from
+    the corresponding values whereby unit defaults to None and
+    collection_mode defaults to "single".
   - If *list*, each element is checked for replacement and the resulting list will be used
     as (list) value for the property
 
@@ -195,7 +197,10 @@ out: tuple
         if "unit" in value:
             propunit = value["unit"]
         # can be "single", "list" or "multiproperty"
-        collection_mode = value["collection_mode"]
+        if "collection_mode" in value:
+            collection_mode = value["collection_mode"]
+        else:
+            collection_mode = "single"
     elif isinstance(value, str):
         propvalue = value
         collection_mode = "single"
@@ -221,13 +226,13 @@ out: tuple
             else:
                 propvalue.append(element)
 
-        return (propvalue, collection_mode)
+        return (propvalue, propunit, collection_mode)
     else:
         # value is another simple type
         collection_mode = "single"
         propvalue = value
         # Return it immediately, otherwise variable substitution would be done and fail:
-        return (propvalue, collection_mode)
+        return (propvalue, propunit, collection_mode)
 
     propvalue = replace_variables(propvalue, values)
     if propunit:
diff --git a/unittests/test_converters.py b/unittests/test_converters.py
index f1b74d89ffd367849b85433e0e456ae8a78134a8..f1a4b2c9d880e77a6761a8768c590b201f7b2079 100644
--- a/unittests/test_converters.py
+++ b/unittests/test_converters.py
@@ -352,6 +352,7 @@ def test_variable_replacement():
     values = GeneralStore()
     values["a"] = 4
     values["b"] = "68"
+    values["my_unit"] = "m"
 
     # basic values stay unchanged
     assert replace_variables(5, values) is 5
@@ -359,28 +360,33 @@ def test_variable_replacement():
     assert replace_variables("$a", values) is 4
     assert replace_variables("${b}", values) == "68"
 
-    assert handle_value("b", values) == ("b", "single")
-    assert handle_value("+b", values) == ("b", "list")
-    assert handle_value("*b", values) == ("b", "multiproperty")
-    assert handle_value("$b", values) == ("68", "single")
-    assert handle_value("+$b", values) == ("68", "list")
-    assert handle_value("*$b", values) == ("68", "multiproperty")
+    # values given as simple strings never have units
+    assert handle_value("b", values) == ("b", None, "single")
+    assert handle_value("+b", values) == ("b", None, "list")
+    assert handle_value("*b", values) == ("b", None, "multiproperty")
+    assert handle_value("$b", values) == ("68", None, "single")
+    assert handle_value("+$b", values) == ("68", None, "list")
+    assert handle_value("*$b", values) == ("68", None, "multiproperty")
 
+    # No units in dicts
     assert handle_value({"value": "b",
-                         "collection_mode": "single"}, values) == ("b", "single")
+                         "collection_mode": "single"}, values) == ("b", None, "single")
     assert handle_value({"value": "b",
-                         "collection_mode": "list"}, values) == ("b", "list")
+                         "collection_mode": "list"}, values) == ("b", None, "list")
     assert handle_value({"value": "b",
-                         "collection_mode": "multiproperty"}, values) == ("b", "multiproperty")
+                         "collection_mode": "multiproperty"}, values) == ("b", None, "multiproperty")
     assert handle_value({"value": "$b",
-                         "collection_mode": "single"}, values) == ("68", "single")
+                         "collection_mode": "single"}, values) == ("68", None, "single")
     assert handle_value({"value": "$b",
-                         "collection_mode": "list"}, values) == ("68", "list")
+                         "collection_mode": "list"}, values) == ("68", None, "list")
     assert handle_value({"value": "$b",
-                         "collection_mode": "multiproperty"}, values) == ("68", "multiproperty")
+                         "collection_mode": "multiproperty"}, values) == ("68", None, "multiproperty")
 
-    assert handle_value(["a", "b"], values) == (["a", "b"], "single")
-    assert handle_value(["$a", "$b"], values) == ([4, "68"], "single")
+    # Unit specified in the same way as value:
+    assert handle_value({"value": 5, "unit": "m"}, values) == (5, "m", "single")
+
+    assert handle_value(["a", "b"], values) == (["a", "b"], None, "single")
+    assert handle_value(["$a", "$b"], values) == ([4, "68"], None, "single")
 
 
 def test_apply_transformers(converter_registry):
diff --git a/unittests/test_scalars_cfood.py b/unittests/test_scalars_cfood.py
index ba604fe4f5b695506bf8df9dab79fc23232c546a..4375ba199d64c3a24d07b3ea1cc4d221d967954b 100644
--- a/unittests/test_scalars_cfood.py
+++ b/unittests/test_scalars_cfood.py
@@ -24,15 +24,15 @@ def test_handle_value():
     store = GeneralStore()
 
     # This one should work:
-    assert handle_value("bla", store) == ("bla", "single")
+    assert handle_value("bla", store) == ("bla", None, "single")
 
     # These failed:
-    assert handle_value(4, store) == (4, "single")
-    assert handle_value(4.2, store) == (4.2, "single")
-    assert handle_value(True, store) == (True, "single")
+    assert handle_value(4, store) == (4, None, "single")
+    assert handle_value(4.2, store) == (4.2, None, "single")
+    assert handle_value(True, store) == (True, None, "single")
 
     # List test:
-    assert handle_value([4, 3, 2], store) == ([4, 3, 2], "single")
+    assert handle_value([4, 3, 2], store) == ([4, 3, 2], None, "single")
 
 
 def test_record_structure_generation():