Index: wrapper/opensync-plugin.i
===================================================================
--- wrapper/opensync-plugin.i	(Revision 5381)
+++ wrapper/opensync-plugin.i	(Arbeitskopie)
@@ -120,11 +120,14 @@
 	}
 
 	int num_plugins() {
-		return osync_plugin_env_num_plugins(self);
+		OSyncList *plugins = osync_plugin_env_get_plugins(self);
+		return osync_list_length(plugins);
 	}
 
 	Plugin *nth_plugin(int nth) {
-		Plugin *plugin = osync_plugin_env_nth_plugin(self, nth);
+		OSyncList *plugins = osync_plugin_env_get_plugins(self);
+		
+		Plugin *plugin = (OSyncPlugin*)osync_list_nth_data(plugins, nth);
 		if (plugin)
 			osync_plugin_ref(plugin);
 		return plugin;
@@ -190,14 +193,20 @@
 		osync_plugin_info_add_objtype(self, sink);
 	}
 
-	int num_objtypes() {
-		return osync_plugin_info_num_objtypes(self);
+	unsigned int num_objtypes() {
+		OSyncList *objtypesinks = osync_plugin_info_get_objtypes(self);
+		unsigned int num = osync_list_length(objtypesinks);
+		osync_list_free(objtypesinks);
+		return num;
 	}
 
 	ObjTypeSink *nth_objtype(int nth) {
-		ObjTypeSink *ret = osync_plugin_info_nth_objtype(self, nth);
+		/* TODO: return a list structure of phython */
+		OSyncList *objtypesinks = osync_plugin_info_get_objtypes(self);
+		ObjTypeSink *ret = (ObjTypeSink*)osync_list_nth_data(objtypesinks, nth);
 		if (ret)
 			osync_objtype_sink_ref(ret);
+		osync_list_free(objtypesinks);
 		return ret;
 	}
 
Index: opensync/plugin/opensync_plugin_env_internals.h
===================================================================
--- opensync/plugin/opensync_plugin_env_internals.h	(Revision 5381)
+++ opensync/plugin/opensync_plugin_env_internals.h	(Arbeitskopie)
@@ -50,6 +50,18 @@
  */
 OSYNC_TEST_EXPORT osync_bool osync_plugin_env_plugin_is_usable(OSyncPluginEnv *env, const char *pluginname, OSyncError **error);
 
+/** @brief Returns the number of loaded plugins
+ * 
+ * TODO: This function isn't necessary anymore and can possibly be removed
+ * 
+ * Returns the number of loaded plugins. 0 if used before initialization
+ * 
+ * @param env Pointer to a OSyncPluginEnv environment
+ * @returns Number of plugins
+ * 
+ */
+OSYNC_TEST_EXPORT unsigned int osync_plugin_env_num_plugins(OSyncPluginEnv *env);
+
 /*@}*/
 
 #endif /* _OPENSYNC_PLUGIN_ENV_INTERNALS_H_ */
Index: opensync/plugin/opensync_plugin_env.c
===================================================================
--- opensync/plugin/opensync_plugin_env.c	(Revision 5381)
+++ opensync/plugin/opensync_plugin_env.c	(Arbeitskopie)
@@ -214,9 +214,9 @@
 	return osync_list_length(env->plugins);
 }
 
-OSyncPlugin *osync_plugin_env_nth_plugin(OSyncPluginEnv *env, unsigned int nth)
+OSyncList *osync_plugin_env_get_plugins(OSyncPluginEnv *env)
 {
-	return (OSyncPlugin *)osync_list_nth_data(env->plugins, nth);
+	return osync_list_copy(env->plugins);
 }
 
 osync_bool osync_plugin_env_plugin_is_usable(OSyncPluginEnv *env, const char *pluginname, OSyncError **error)
Index: opensync/plugin/opensync_plugin_info.c
===================================================================
--- opensync/plugin/opensync_plugin_info.c	(Revision 5381)
+++ opensync/plugin/opensync_plugin_info.c	(Arbeitskopie)
@@ -27,6 +27,7 @@
 
 #include "opensync-merger.h"
 #include "opensync-version.h"
+#include "opensync_list.h"
 
 OSyncPluginInfo *osync_plugin_info_new(OSyncError **error)
 {
@@ -171,18 +172,11 @@
 	osync_objtype_sink_ref(sink);
 }
 
-unsigned int osync_plugin_info_num_objtypes(OSyncPluginInfo *info)
-{
+OSyncList *osync_plugin_info_get_objtypes(OSyncPluginInfo *info) {
 	osync_assert(info);
-	return osync_list_length(info->objtypes);
+	return osync_list_copy(info->objtypes);
 }
 
-OSyncObjTypeSink *osync_plugin_info_nth_objtype(OSyncPluginInfo *info, unsigned int nth)
-{
-	osync_assert(info);
-	return osync_list_nth_data(info->objtypes, nth);
-}
-
 OSyncObjTypeSink *osync_plugin_info_get_main_sink(OSyncPluginInfo *info)
 {
 	osync_assert(info);
Index: opensync/plugin/opensync_plugin_env.h
===================================================================
--- opensync/plugin/opensync_plugin_env.h	(Revision 5381)
+++ opensync/plugin/opensync_plugin_env.h	(Arbeitskopie)
@@ -101,27 +101,13 @@
  */
 OSYNC_EXPORT OSyncPlugin *osync_plugin_env_find_plugin(OSyncPluginEnv *env, const char *name);
 
-/** @brief Returns the number of loaded plugins
+/* @brief Get all plugins which are registered in the Plugin Env
  * 
- * Returns the number of loaded plugins. 0 if used before initialization
- * 
- * @param env Pointer to a OSyncPluginEnv environment
- * @returns Number of plugins
- * 
+ * @param env Pointer to a OSyncPluginEnv
+ * @return A shallow copy of the internal plugin list
  */
-OSYNC_EXPORT unsigned int osync_plugin_env_num_plugins(OSyncPluginEnv *env);
+OSYNC_EXPORT OSyncList *osync_plugin_env_get_plugins(OSyncPluginEnv *env);
 
-/** @brief Returns pointer to nth plugin
- * 
- * Returns pointer to nth plugin
- * 
- * @param env Pointer to a OSyncPluginEnv environment
- * @param nth Which plugin to return
- * @returns Pointer to plugin
- * 
- */
-OSYNC_EXPORT OSyncPlugin *osync_plugin_env_nth_plugin(OSyncPluginEnv *env, unsigned int nth);
-
 /*@}*/
 
 #endif /* _OPENSYNC_PLUGIN_ENV_H_ */
Index: opensync/plugin/opensync_plugin_info.h
===================================================================
--- opensync/plugin/opensync_plugin_info.h	(Revision 5381)
+++ opensync/plugin/opensync_plugin_info.h	(Arbeitskopie)
@@ -110,24 +110,14 @@
  */
 OSYNC_EXPORT void osync_plugin_info_add_objtype(OSyncPluginInfo *info, OSyncObjTypeSink *sink);
 
-/** @brief Returns the number of added object types (sinks)
+/**
+ * @brief Returns all Objtype Sinks as a list
  * 
- * @param info Pointer to the plugin info object
- * @returns the number of object types in the plugin info
- * 
+ * @param Pointer to a OSyncPluginInfo
+ * @return A shallow copy of the internal objtype list
  */
-OSYNC_EXPORT unsigned int osync_plugin_info_num_objtypes(OSyncPluginInfo *info);
+OSYNC_EXPORT OSyncList *osync_plugin_info_get_objtypes(OSyncPluginInfo *info);
 
-/** @brief Returns the nth added object type (sink)
- * 
- * @param info Pointer to the plugin info object
- * @param nth the index of the object type (sink) to return
- * @returns the object type (sink) at the specified index
- * 
- */
-OSYNC_EXPORT OSyncObjTypeSink *osync_plugin_info_nth_objtype(OSyncPluginInfo *info, unsigned int nth);
-
-
 /** @brief Returns the Main Sink 
  * 
  * @param info Pointer to the plugin info object
Index: opensync/client/opensync_client.c
===================================================================
--- opensync/client/opensync_client.c	(Revision 5381)
+++ opensync/client/opensync_client.c	(Arbeitskopie)
@@ -30,6 +30,8 @@
 #include "opensync-helper.h"
 #include "helper/opensync_hashtable_internals.h"
 
+#include "common/opensync_list.h"
+
 #include "opensync-ipc.h"
 #include "ipc/opensync_serializer_internals.h"
 #include "ipc/opensync_message_internals.h"
@@ -575,8 +577,9 @@
 	const char *objtype = NULL;
 	const char *preferred_format = NULL;
 	OSyncList *o = NULL;
+	OSyncList *objtypesinks = NULL;
+	OSyncList *list;
 	OSyncObjFormatSink *format_sink = NULL;
-	unsigned int n, num_sinks;
 	osync_bool couldinit;
 	
 	osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error);
@@ -698,10 +701,10 @@
 		goto error;
 	}
 
-	num_sinks = osync_plugin_info_num_objtypes(client->plugin_info);
-	for (n = 0; n < num_sinks; n++) {
-
-		sink = osync_plugin_info_nth_objtype(client->plugin_info, n);
+	objtypesinks = osync_plugin_info_get_objtypes(client->plugin_info);
+	list = objtypesinks;
+	while (list) {
+		sink = (OSyncObjTypeSink*)list->data;
 		if (!osync_objtype_sink_load_anchor(sink, client->plugin_info, error)) {
 			goto error_finalize;
 		}
@@ -709,8 +712,9 @@
 		if (!osync_objtype_sink_load_hashtable(sink, client->plugin_info, error)) {
 			goto error_finalize;
 		}
-
+		list = list->next;
 	}
+	osync_list_free(objtypesinks);
 
 	main_sink = osync_plugin_info_get_main_sink(client->plugin_info);
 	if (main_sink) {
@@ -745,6 +749,7 @@
  error_free_message:
 	osync_message_unref(reply);
  error_finalize:
+	osync_list_free(objtypesinks);
 	osync_plugin_finalize(client->plugin, client->plugin_data);
  error:
 	osync_free(enginepipe);
@@ -816,10 +821,8 @@
 static osync_bool _osync_client_handle_discover(OSyncClient *client, OSyncMessage *message, OSyncError **error)
 {
 	OSyncMessage *reply = NULL;
-	unsigned int i = 0;
 	OSyncPluginConfig *config = NULL;
 	OSyncList *res = NULL;
-	unsigned int numobjs = 0;
 	unsigned int avail = 0;
 	OSyncObjTypeSink *sink = NULL;
 	OSyncVersion *version = NULL;
@@ -828,6 +831,8 @@
 	int size = 0;
 	unsigned int num_res = 0;
 	OSyncPluginResource *resource = NULL;
+	OSyncList *objtypesinks = NULL;
+	OSyncList *list;
 
 	config = osync_plugin_info_get_config(client->plugin_info);
 	res = osync_plugin_config_get_resources(config);
@@ -846,24 +851,29 @@
 	else
 		osync_message_write_int(reply, 0);
 
-	numobjs = osync_plugin_info_num_objtypes(client->plugin_info);
-	for (i = 0; i < numobjs; i++) {
-		sink = osync_plugin_info_nth_objtype(client->plugin_info, i);
+	objtypesinks = osync_plugin_info_get_objtypes(client->plugin_info);
+	list = objtypesinks;
+	while(list) {
+		sink = (OSyncObjTypeSink*)list->data;
 		if (osync_objtype_sink_is_available(sink)) {
 			avail++;
 		}
+		list = list->next;
 	}
 
 	osync_message_write_uint(reply, avail);
 	
-	for (i = 0; i < numobjs; i++) {
-		sink = osync_plugin_info_nth_objtype(client->plugin_info, i);
+	list = objtypesinks;
+	while(list) {
+		sink = (OSyncObjTypeSink*)list->data;
 		if (osync_objtype_sink_is_available(sink)) {
 			if (!osync_marshal_objtype_sink(reply, sink, error))
 				goto error_free_message;
 		}
+		list = list->next;
 	}
-
+	osync_list_free(objtypesinks);
+	
 	version = osync_plugin_info_get_version(client->plugin_info);
 	if (version) {
 		osync_message_write_int(reply, 1);
@@ -909,6 +919,7 @@
 	return TRUE;
 	
  error_free_message:
+	osync_list_free(objtypesinks);
 	osync_message_unref(reply);
  error:
 	osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error));
Index: tools/osyncplugin.c
===================================================================
--- tools/osyncplugin.c	(Revision 5381)
+++ tools/osyncplugin.c	(Arbeitskopie)
@@ -448,23 +448,30 @@
 
 static void *plugin_initialize(OSyncError **error)
 {
-	unsigned int n, num_sinks = osync_plugin_info_num_objtypes(plugin_info);
+	OSyncList *list;
+	OSyncList *objtypesinks = NULL;
 	void *plugin_data;
 	osync_bool couldinit;
 	couldinit = osync_plugin_initialize(plugin, &(plugin_data), plugin_info, error);
 
+	objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+	list = objtypesinks;
+	while(list) {
+		OSyncObjTypeSink *sink = (OSyncObjTypeSink*)list->data;
+		if (!osync_objtype_sink_load_anchor(sink, plugin_info, error)) 
+			goto error;
 
-	for (n = 0; n < num_sinks; n++) {
-		OSyncObjTypeSink *sink = osync_plugin_info_nth_objtype(plugin_info, n);
-
-		if (!osync_objtype_sink_load_anchor(sink, plugin_info, error))
-			return NULL;
-
 		if (!osync_objtype_sink_load_hashtable(sink, plugin_info, error))
-			return NULL;
+			goto error;
+		
+		list = list->next;
 	}
+	osync_list_free(objtypesinks);
 
 	return plugin_data;
+error:
+	osync_list_free(objtypesinks);
+	return NULL;
 }
 
 static void finalize_plugin(void **plugin_data)
@@ -598,8 +605,9 @@
 
 static osync_bool get_changes(Command *cmd, SyncType type, OSyncError **error)
 {
-	int num, i;
 	OSyncObjTypeSink *sink = NULL;
+	OSyncList *list;
+	OSyncList *objtypesinks = NULL;
 	const char *objtype = cmd->arg;
 
 	if (objtype) {
@@ -613,25 +621,28 @@
 
 	} else {
 		/* all available objtypes */
-		num = osync_plugin_info_num_objtypes(plugin_info);
-		for (i=0; i < num; i++) {
-			sink = osync_plugin_info_nth_objtype(plugin_info, i);
+		objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+		list = objtypesinks;
+		while(list) {
+			sink = (OSyncObjTypeSink*)list->data;
 
 			cmd->sink = sink;
 			if (!get_changes_sink(cmd, sink, type, error))
 				goto error;
+			list = list->next;
 		}
-
 		/* last but not least - the main sink */
 		if (get_main_sink())
-		
 			if (!get_changes_sink(cmd, get_main_sink(), type, error))
 				goto error;
+		
+		osync_list_free(objtypesinks);
 	}
 
 	return TRUE;
 
  error:
+	osync_list_free(objtypesinks);
 	return FALSE;
 }
 
@@ -699,8 +710,9 @@
 
 static osync_bool connect_plugin(Command *cmd, OSyncError **error)
 {	
-	unsigned int i, num;
 	OSyncObjTypeSink *sink = NULL;
+	OSyncList *objtypesinks = NULL;
+	OSyncList *list;
 	const char *objtype = cmd->arg;
 
 	if (objtype) {
@@ -711,22 +723,27 @@
 		if (!connect_sink(cmd, sink, error))
 			goto error;
 	} else {
-		num = osync_plugin_info_num_objtypes(plugin_info);
-		for (i=0; i < num; i++) {
-			sink = osync_plugin_info_nth_objtype(plugin_info, i);
+		objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+		list = objtypesinks;
+		while(list) {
+			sink = (OSyncObjTypeSink*)list->data;
 
 			if (!connect_sink(cmd, sink, error))
 				goto error;
+			list = list->next;
 		}
 
 		/* last but not least - the main sink */
 		if (get_main_sink())
 			if (!connect_sink(cmd, get_main_sink(), error))
 				goto error;
+		
+		osync_list_free(objtypesinks);
 	}
 
 	return TRUE;
  error:
+	osync_list_free(objtypesinks);
 	return FALSE;
 }
 
@@ -790,8 +807,8 @@
 
 static osync_bool disconnect(Command *cmd, OSyncError **error)
 {
-	
-	int i, num;
+	OSyncList *list;
+	OSyncList *objtypesinks = NULL;
 	OSyncObjTypeSink *sink = NULL;
 	const char *objtype = cmd->arg;
 
@@ -803,22 +820,27 @@
 		if (!disconnect_sink(cmd, sink, error))
 			goto error;
 	} else {
-		num = osync_plugin_info_num_objtypes(plugin_info);
-		for (i=0; i < num; i++) {
-			sink = osync_plugin_info_nth_objtype(plugin_info, i);
+		objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+		list = objtypesinks;
+		while(list) {
+			sink = (OSyncObjTypeSink*)list->data;
 
 			if (!disconnect_sink(cmd, sink, error))
 				goto error;
+			list = list->next;
 		}
 
 		/* last but not least - the main sink */
 		if (get_main_sink())
 			if (!disconnect_sink(cmd, get_main_sink(), error))
 				goto error;
+		
+		osync_list_free(objtypesinks);
 	}
 
 	return TRUE;
  error:
+	osync_list_free(objtypesinks);
 	return FALSE;
 }
 
@@ -882,7 +904,8 @@
 
 static osync_bool commit(Command *cmd, OSyncChange *change, OSyncError **error)
 {
-	int i, num;
+	OSyncList *list;
+	OSyncList *objtypesinks = NULL;
 	OSyncObjTypeSink *sink = NULL;
 	const char *objtype = cmd->arg;
 
@@ -896,22 +919,27 @@
 		if (!commit_sink(cmd, sink, change, error))
 			goto error;
 	} else {
-		num = osync_plugin_info_num_objtypes(plugin_info);
-		for (i=0; i < num; i++) {
-			sink = osync_plugin_info_nth_objtype(plugin_info, i);
+		objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+		list = objtypesinks;
+		while(list){
+			sink = (OSyncObjTypeSink*)list->data;
 
 			if (!commit_sink(cmd, sink, change, error))
 				goto error;
+			list = list->next;
 		}
 
 		/* last but not least - the main sink */
 		if (get_main_sink())
 			if (!commit_sink(cmd, get_main_sink(), change, error))
 				goto error;
+		
+		osync_list_free(objtypesinks);
 	}
 	
 	return TRUE;
  error:
+	osync_list_free(objtypesinks);
 	return FALSE;
 }
 
@@ -998,7 +1026,8 @@
 static osync_bool syncdone(Command *cmd, OSyncError **error)
 {
 	
-	int i, num;
+	OSyncList *objtypesinks = NULL;
+	OSyncList *list;
 	OSyncObjTypeSink *sink = NULL;
 	const char *objtype = cmd->arg;
 
@@ -1010,22 +1039,28 @@
 		if (!syncdone_sink(cmd, sink, error))
 			goto error;
 	} else {
-		num = osync_plugin_info_num_objtypes(plugin_info);
-		for (i=0; i < num; i++) {
-			sink = osync_plugin_info_nth_objtype(plugin_info, i);
+		objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+		list = objtypesinks;
+		while(list) {
+			sink = (OSyncObjTypeSink*)list->data;
 
 			if (!syncdone_sink(cmd, sink, error))
 				goto error;
+			
+			list = list->next;
 		}
 
 		/* last but not least - the main sink */
 		if (get_main_sink())
 			if (!syncdone_sink(cmd, get_main_sink(), error))
 				goto error;
+		
+		osync_list_free(objtypesinks);
 	}
 
 	return TRUE;
  error:
+	osync_list_free(objtypesinks);
 	return FALSE;
 }
 
@@ -1081,7 +1116,8 @@
 
 static osync_bool committedall(Command *cmd, OSyncError **error)
 {
-	int i, num;
+	OSyncList *list;
+	OSyncList *objtypesinks = NULL;
 	OSyncObjTypeSink *sink = NULL;
 	const char *objtype = cmd->arg;
 
@@ -1093,22 +1129,28 @@
 		if (!committedall_sink(cmd, sink, error))
 			goto error;
 	} else {
-		num = osync_plugin_info_num_objtypes(plugin_info);
-		for (i=0; i < num; i++) {
-			sink = osync_plugin_info_nth_objtype(plugin_info, i);
+		objtypesinks = osync_plugin_info_get_objtypes(plugin_info);
+		list = objtypesinks;
+		while(list) {
+			sink = (OSyncObjTypeSink*)list->data;
 
 			if (!committedall_sink(cmd, sink, error))
 				goto error;
+			
+			list = list->next;
 		}
 
 		/* last but not least - the main sink */
 		if (get_main_sink())
 			if (!committedall_sink(cmd, get_main_sink(), error))
 				goto error;
+		
+		osync_list_free(objtypesinks);
 	}
 
 	return TRUE;
  error:
+	osync_list_free(objtypesinks);
 	return FALSE;
 }
 
@@ -1216,8 +1258,8 @@
 }
 
 static osync_bool plugin_list(OSyncError **error) {
-	int num;
-	int i;
+	OSyncList *plugins;
+	OSyncList *list;
 	
 	assert(!plugin_env);
 
@@ -1233,12 +1275,15 @@
 	if (!osync_plugin_env_load(plugin_env, pluginpath, error))
 		goto error_free_formatenv;
 
-	num= osync_plugin_env_num_plugins(plugin_env);
-	for(i= 0; i < num; i++) {
-		OSyncPlugin* plugin= osync_plugin_env_nth_plugin(plugin_env, i);
+	plugins = osync_plugin_env_get_plugins(plugin_env);
+	list = plugins;
+	while(list) {
+		OSyncPlugin* plugin = (OSyncPlugin*)list->data;
 		fprintf (stdout, "Name:        %s\n", osync_plugin_get_name(plugin));
-		fprintf (stdout, "Description: %s\n", osync_plugin_get_description(plugin));		
-	} 
+		fprintf (stdout, "Description: %s\n", osync_plugin_get_description(plugin));
+		list = list->next;
+	}
+	osync_list_free(plugins);
 	return TRUE;
 	
  error_free_formatenv:
Index: tests/mock-plugin/mock_sync.c
===================================================================
--- tests/mock-plugin/mock_sync.c	(Revision 5381)
+++ tests/mock-plugin/mock_sync.c	(Arbeitskopie)
@@ -607,15 +607,17 @@
 	/* Now we register the objtypes that we can sync. This plugin is special. It can
 	 * synchronize any objtype we configure it to sync and where a conversion
 	 * path to the file format can be found */
-	int i, numobjs = osync_plugin_info_num_objtypes(info);
-	for (i = 0; i < numobjs; i++) {
+	OSyncList *objtypesinks = osync_plugin_info_get_objtypes(info);
+	OSyncList *list = objtypesinks;
+	while(list) {
 		MockDir *dir = osync_try_malloc0(sizeof(MockDir), error);
 		osync_assert(dir);
 
 		dir->committed_all = TRUE;
 
-		OSyncObjTypeSink *sink = osync_plugin_info_nth_objtype(info, i);
+		OSyncObjTypeSink *sink = (OSyncObjTypeSink*)list->data;
 		osync_assert(sink);
+		list = list->next;
 
 		const char *objtype = osync_objtype_sink_get_name(sink);
 		dir->res = osync_plugin_config_find_active_resource(config, objtype);
@@ -723,7 +725,7 @@
 #endif
 		env->directories = g_list_append(env->directories, dir);
 	}
-
+	osync_list_free(objtypesinks);
 	osync_trace(TRACE_EXIT, "%s: %p", __func__, env);
 	return (void *)env;
 }
Index: tests/engine-tests/check_engine_error.c
===================================================================
--- tests/engine-tests/check_engine_error.c	(Revision 5381)
+++ tests/engine-tests/check_engine_error.c	(Arbeitskopie)
@@ -130,8 +130,8 @@
 
 	mock_env *env = osync_try_malloc0(sizeof(mock_env), error);
 	osync_assert(env);
-
-	OSyncObjTypeSink *sink = osync_plugin_info_nth_objtype(info, 0);
+	OSyncList *objtypesinks = osync_plugin_info_get_objtypes(info);
+	OSyncObjTypeSink *sink = (OSyncObjTypeSink*)objtypesinks->data;
 	osync_assert(sink);
 	
 	OSyncObjFormatSink *formatsink = osync_objformat_sink_new("mockformat1", error);
@@ -147,6 +147,7 @@
 	osync_plugin_info_add_objtype(info, sink);
 	osync_objtype_sink_unref(sink);
 
+	osync_list_free(objtypesinks);
 	osync_trace(TRACE_EXIT, "%s: %p", __func__, env);
 	return (void *)env;
 }

