diff --git a/include/ccaosdb.h b/include/ccaosdb.h
index fdd8ce799dffabac044be61829bb51063e9fbee2..53fbe1341f5efbdaec87db31cf09eb0cdf21fbd7 100644
--- a/include/ccaosdb.h
+++ b/include/ccaosdb.h
@@ -350,27 +350,11 @@ int caosdb_entity_entity_get_role(caosdb_entity_entity *entity, char **out);
 int caosdb_entity_entity_get_name(caosdb_entity_entity *entity, char **out);
 int caosdb_entity_entity_get_description(caosdb_entity_entity *entity, char **out);
 int caosdb_entity_entity_get_local_path(caosdb_entity_entity *entity, char **out);
-/**
- * Get the name of the entity's datatype, whether it is a reference, and whether it is a list.
- */
-int caosdb_entity_entity_get_datatype(caosdb_entity_entity *entity, char **name, bool *is_ref,
-                                      bool *is_list);
+// TODO(fspreck) implementation
+int caosdb_entity_entity_get_datatype(caosdb_entity_entity *entity, caosdb_entity_datatype *out);
 int caosdb_entity_entity_get_unit(caosdb_entity_entity *entity, char **out);
-
-int caosdb_entity_entity_get_int_value(caosdb_entity_entity *entity, int64_t *out);
-int caosdb_entity_entity_get_double_value(caosdb_entity_entity *entity, double *out);
-int caosdb_entity_entity_get_boolean_value(caosdb_entity_entity *entity, bool *out);
-int caosdb_entity_entity_get_string_value(caosdb_entity_entity *entity, char **out);
-int caosdb_entity_entity_get_int_list_value_at(caosdb_entity_entity *entity, int64_t *out,
-                                               const int index);
-int caosdb_entity_entity_get_double_list_value_at(caosdb_entity_entity *entity, double *out,
-                                                  const int index);
-int caosdb_entity_entity_get_boolean_list_value_at(caosdb_entity_entity *entity, bool *out,
-                                                   const int index);
-int caosdb_entity_entity_get_string_list_value_at(caosdb_entity_entity *entity, char **out,
-                                                  const int index);
-int caosdb_entity_entity_get_value_list_length(caosdb_entity_entity *entity, int *out);
-
+// TODO(fspreck) implementation
+int caosdb_entity_entity_get_value(caosdb_entity_entity *entity, caosdb_entity_value *out);
 int caosdb_entity_entity_get_version_id(caosdb_entity_entity *entity, char **out);
 int caosdb_entity_entity_get_errors_size(caosdb_entity_entity *entity, int *out);
 int caosdb_entity_entity_get_error(caosdb_entity_entity *entity, caosdb_entity_message *out,
@@ -392,27 +376,12 @@ int caosdb_entity_property_get_id(caosdb_entity_property *property, char **out);
 int caosdb_entity_property_get_name(caosdb_entity_property *property, char **out);
 int caosdb_entity_property_get_description(caosdb_entity_property *property, char **out);
 int caosdb_entity_property_get_importance(caosdb_entity_property *property, char **out);
-/**
- * Get the name of the property's datatype, whether it is a reference, and whether it is a list.
- */
-int caosdb_entity_property_get_datatype(caosdb_entity_property *property, char **name, bool *is_ref,
-                                        bool *is_list);
+// TODO(fspreck) implementation
+int caosdb_entity_property_get_datatype(caosdb_entity_property *property,
+                                        caosdb_entity_datatype *out);
 int caosdb_entity_property_get_unit(caosdb_entity_property *property, char **out);
-
-int caosdb_entity_property_get_int_value(caosdb_entity_property *property, int64_t *out);
-int caosdb_entity_property_get_double_value(caosdb_entity_property *property, double *out);
-int caosdb_entity_property_get_boolean_value(caosdb_entity_property *property, bool *out);
-int caosdb_entity_property_get_string_value(caosdb_entity_property *property, char **out);
-int caosdb_entity_property_get_int_list_value_at(caosdb_entity_property *property, int64_t *out,
-                                                 const int index);
-int caosdb_entity_property_get_double_list_value_at(caosdb_entity_property *property, double *out,
-                                                    const int index);
-int caosdb_entity_property_get_boolean_list_value_at(caosdb_entity_property *property, bool *out,
-                                                     const int index);
-int caosdb_entity_property_get_string_list_value_at(caosdb_entity_property *property, char **out,
-                                                    const int index);
-int caosdb_entity_property_get_value_list_length(caosdb_entity_property *property, int *out);
-
+// TODO(fspreck) implementation
+int caosdb_entity_property_get_value(caosdb_entity_property *property, caosdb_entity_value *out);
 int caosdb_entity_parent_get_id(caosdb_entity_parent *parent, char **out);
 int caosdb_entity_parent_get_name(caosdb_entity_parent *parent, char **out);
 int caosdb_entity_parent_get_description(caosdb_entity_parent *parent, char **out);
@@ -420,6 +389,8 @@ int caosdb_entity_parent_get_description(caosdb_entity_parent *parent, char **ou
 int caosdb_entity_message_get_code(caosdb_entity_message *message, int *out);
 int caosdb_entity_message_get_description(caosdb_entity_message *message, char **out);
 
+// TODO(fspreck) getters for value and datatypes
+
 // CONSTRUCTORS AND DESTRUCTORS
 int caosdb_entity_create_entity(caosdb_entity_entity *out);
 int caosdb_entity_delete_entity(caosdb_entity_entity *out);
@@ -427,6 +398,11 @@ int caosdb_entity_create_property(caosdb_entity_property *out);
 int caosdb_entity_delete_property(caosdb_entity_property *out);
 int caosdb_entity_create_parent(caosdb_entity_parent *out);
 int caosdb_entity_delete_parent(caosdb_entity_parent *out);
+// TODO(fspreck) implementations, also list_datatypes, list_values...
+int caosdb_entity_create_datatype(caosdb_entity_datatype *out);
+int caosdb_entity_delete_datatype(caosdb_entity_datatype *out);
+int caosdb_entity_create_value(caosdb_entity_value *out);
+int caosdb_entity_delete_value(caosdb_entity_value *out);
 
 // SETTERS FOR EVERYTHING THAT MAY BE SET
 int caosdb_entity_entity_set_role(caosdb_entity_entity *entity, const char *role);
@@ -434,25 +410,12 @@ int caosdb_entity_entity_set_name(caosdb_entity_entity *entity, const char *name
 int caosdb_entity_entity_set_description(caosdb_entity_entity *entity, const char *description);
 int caosdb_entity_entity_set_local_path(caosdb_entity_entity *entity, const char *name);
 int caosdb_entity_entity_set_file_path(caosdb_entity_entity *entity, const char *name);
-/**
- * Set the entity's datatype by name, and whether it is a reference or a list.
- */
-int caosdb_entity_entity_set_datatype(caosdb_entity_entity *entity, const char *datatype,
-                                      const bool is_ref, const bool is_list);
+// TODO(fspreck) implementation
+int caosdb_entity_entity_set_datatype(caosdb_entity_entity *entity,
+                                      caosdb_entity_datatype *datatype);
 int caosdb_entity_entity_set_unit(caosdb_entity_entity *entity, const char *unit);
-// TODO(fspreck) replace by more specific setters
-int caosdb_entity_entity_set_int_value(caosdb_entity_entity *entity, const int64_t value);
-int caosdb_entity_entity_set_double_value(caosdb_entity_entity *entity, const double value);
-int caosdb_entity_entity_set_boolean_value(caosdb_entity_entity *entity, const bool value);
-int caosdb_entity_entity_set_string_value(caosdb_entity_entity *entity, const char *value);
-int caosdb_entity_entity_set_int_list_value(caosdb_entity_entity *entity, const int64_t *value,
-                                            const int length);
-int caosdb_entity_entity_set_double_list_value(caosdb_entity_entity *entity, const double *value,
-                                               const int length);
-int caosdb_entity_entity_set_boolean_list_value(caosdb_entity_entity *entity, const bool *value,
-                                                const int length);
-int caosdb_entity_entity_set_string_list_value(caosdb_entity_entity *entity, const char **value,
-                                               const int length);
+// TODO(fspreck) implementation
+int caosdb_entity_entity_set_value(caosdb_entity_entity *entity, caosdb_entity_value *value);
 
 int caosdb_entity_entity_append_parent(caosdb_entity_entity *entity, caosdb_entity_parent *parent);
 int caosdb_entity_entity_remove_parent(caosdb_entity_entity *entity, int index);
@@ -462,30 +425,20 @@ int caosdb_entity_entity_remove_property(caosdb_entity_entity *entity, int index
 
 int caosdb_entity_property_set_id(caosdb_entity_property *property, const char *id);
 int caosdb_entity_property_set_name(caosdb_entity_property *property, const char *name);
-/**
- * Set the property's datatype by name, and whether it is a reference or a list.
- */
-int caosdb_entity_property_set_datatype(caosdb_entity_property *property, const char *datatype,
-                                        const bool is_ref, const bool is_list);
+// TODO(fspreck) implementation
+int caosdb_entity_property_set_datatype(caosdb_entity_property *property,
+                                        caosdb_entity_datatype *datatype);
 int caosdb_entity_property_set_importance(caosdb_entity_property *property, const char *importance);
 int caosdb_entity_property_set_unit(caosdb_entity_property *property, const char *unit);
 
-int caosdb_entity_property_set_int_value(caosdb_entity_property *property, const int64_t value);
-int caosdb_entity_property_set_double_value(caosdb_entity_property *property, const double value);
-int caosdb_entity_property_set_boolean_value(caosdb_entity_property *property, const bool value);
-int caosdb_entity_property_set_string_value(caosdb_entity_property *property, const char *value);
-int caosdb_entity_property_set_int_list_value(caosdb_entity_property *property,
-                                              const int64_t *value, const int length);
-int caosdb_entity_property_set_double_list_value(caosdb_entity_property *property,
-                                                 const double *value, const int length);
-int caosdb_entity_property_set_boolean_list_value(caosdb_entity_property *property,
-                                                  const bool *value, const int length);
-int caosdb_entity_property_set_string_list_value(caosdb_entity_property *property,
-                                                 const char **value, const int length);
+// TODO(fspreck) implementation
+int caosdb_entity_property_set_value(caosdb_entity_property *property, caosdb_entity_value *value);
 
 int caosdb_entity_parent_set_id(caosdb_entity_parent *parent, const char *id);
 int caosdb_entity_parent_set_name(caosdb_entity_parent *parent, const char *name);
 
+// TODO(fspreck) setters for value and datatype
+
 #ifdef __cplusplus
 }
 #endif