diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp
index ff01b9ba95d8dcded153aa9f94260a98cf5b3c53..357149971e028ad28560cd4883d20720f5432a8c 100644
--- a/test/test_ccaosdb.cpp
+++ b/test/test_ccaosdb.cpp
@@ -298,7 +298,9 @@ TEST_F(test_ccaosdb, test_insert_update_delete) {
   caosdb_entity_create_entity(&original_entity);
   caosdb_entity_entity_set_name(&original_entity, "TestName");
   caosdb_entity_entity_set_role(&original_entity, "PROPERTY");
-  caosdb_entity_entity_set_datatype(&original_entity, "TEXT", false, false);
+  caosdb_entity_datatype in_type;
+  caosdb_entity_create_atomic_datatype(&in_type, "TEXT");
+  caosdb_entity_entity_set_datatype(&original_entity, &in_type);
 
   caosdb_transaction_transaction insert_transaction;
   caosdb_connection_connection_create_transaction(&connection,
@@ -347,17 +349,14 @@ TEST_F(test_ccaosdb, test_insert_update_delete) {
   caosdb_entity_entity_get_role(&retrieved_entity_1, &out);
   EXPECT_EQ(strcmp(in, out), 0);
 
-  bool is_list_in[] = {false}; // NOLINT
-  bool is_ref_in[] = {false};  // NOLINT
-  caosdb_entity_entity_get_datatype(&original_entity, &in, is_ref_in,
-                                    is_list_in);
-  bool is_list_out[] = {false}; // NOLINT
-  bool is_ref_out[] = {false};  // NOLINT
-  caosdb_entity_entity_get_datatype(&retrieved_entity_1, &out, is_ref_out,
-                                    is_list_out);
+  caosdb_entity_datatype out_type;
+  caosdb_entity_entity_get_datatype(&original_entity, &out_type);
+  bool out_is(false);
+  caosdb_entity_datatype_is_atomic(&out_type, &out_is);
+  EXPECT_TRUE(out_is);
+  caosdb_entity_datatype_get_datatype_name(&in_type, &in);
+  caosdb_entity_datatype_get_datatype_name(&out_type, &out);
   EXPECT_EQ(strcmp(in, out), 0);
-  EXPECT_EQ(*is_list_in, *is_list_out);
-  EXPECT_EQ(*is_ref_in, *is_ref_out);
 
   // Change name and update
   return_code =
@@ -414,13 +413,12 @@ TEST_F(test_ccaosdb, test_insert_update_delete) {
   caosdb_entity_entity_get_role(&retrieved_entity_2, &out);
   EXPECT_EQ(strcmp(in, out), 0);
 
-  caosdb_entity_entity_get_datatype(&original_entity, &in, is_ref_in,
-                                    is_list_in);
-  caosdb_entity_entity_get_datatype(&retrieved_entity_2, &out, is_ref_out,
-                                    is_list_out);
+  caosdb_entity_entity_get_datatype(&retrieved_entity_2, &out_type);
+  caosdb_entity_datatype_is_atomic(&out_type, &out_is);
+  EXPECT_TRUE(out_is);
+  caosdb_entity_datatype_get_datatype_name(&in_type, &in);
+  caosdb_entity_datatype_get_datatype_name(&out_type, &out);
   EXPECT_EQ(strcmp(in, out), 0);
-  EXPECT_EQ(*is_ref_in, *is_ref_out);
-  EXPECT_EQ(*is_list_in, *is_list_out);
 
   // Now delete
   caosdb_transaction_transaction delete_transaction;
@@ -472,6 +470,7 @@ TEST_F(test_ccaosdb, test_insert_update_delete) {
   caosdb_transaction_delete_transaction(&retrieve_transaction_1);
   caosdb_transaction_delete_transaction(&insert_transaction);
   caosdb_entity_delete_entity(&original_entity);
+  caosdb_entity_delete_datatype(&in_type);
 }
 
 TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {
@@ -486,7 +485,9 @@ TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {
 
   caosdb_entity_entity_set_name(&original_prop, "TestProp");
   caosdb_entity_entity_set_role(&original_prop, "PROPERTY");
-  caosdb_entity_entity_set_datatype(&original_prop, "TEXT", false, false);
+  caosdb_entity_datatype original_type;
+  caosdb_entity_create_atomic_datatype(&original_type, "TEXT");
+  caosdb_entity_entity_set_datatype(&original_prop, &original_type);
 
   std::cout << "Inserting a property..." << std::endl;
   caosdb_transaction_transaction prop_insertion;
@@ -540,7 +541,9 @@ TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {
   caosdb_entity_property rec_prop;
   caosdb_entity_create_property(&rec_prop);
   caosdb_entity_property_set_id(&rec_prop, prop_id);
-  caosdb_entity_property_set_string_value(&rec_prop, "Bla");
+  caosdb_entity_value in_value;
+  caosdb_entity_create_string_value(&in_value, "Bla");
+  caosdb_entity_property_set_value(&rec_prop, &in_value);
   caosdb_entity_entity_append_property(&original_rec, &rec_prop);
 
   caosdb_transaction_transaction rec_insertion;
@@ -593,8 +596,10 @@ TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {
   caosdb_entity_entity_get_name(&original_prop, &in);
   caosdb_entity_property_get_name(&retrieved_property, &out);
   EXPECT_EQ(strcmp(in, out), 0);
-  caosdb_entity_property_get_string_value(&rec_prop, &in);
-  caosdb_entity_property_get_string_value(&retrieved_property, &out);
+  caosdb_entity_value out_value;
+  caosdb_entity_property_get_value(&retrieved_property, &out_value);
+  caosdb_entity_value_get_as_string(&in_value, &in);
+  caosdb_entity_value_get_as_string(&out_value, &out);
   EXPECT_EQ(strcmp(in, out), 0);
 
   caosdb_transaction_delete_transaction(&retrieve_transaction);
@@ -607,6 +612,8 @@ TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {
   caosdb_entity_delete_entity(&original_rt);
   caosdb_transaction_delete_transaction(&prop_insertion);
   caosdb_entity_delete_entity(&original_prop);
+  caosdb_entity_delete_datatype(&original_type);
+  caosdb_entity_delete_value(&in_value);
 }
 
 TEST_F(test_ccaosdb, test_up_n_download_file) {