You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2018/11/26 19:59:29 UTC

[4/4] celix git commit: CELIX-438: Add a dependency manager API with the celix prefix. Also add a compile options to enable deprecated compiler warning for the 'old' api.

CELIX-438: Add a dependency manager API with the celix prefix. Also add a compile options to enable deprecated compiler warning for the 'old' api.


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/2492416e
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/2492416e
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/2492416e

Branch: refs/heads/develop
Commit: 2492416e3d61d97d73e0673722ce6bc7ed39d0b7
Parents: 3526100
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Mon Nov 26 20:57:46 2018 +0100
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Mon Nov 26 20:57:46 2018 +0100

----------------------------------------------------------------------
 .../log_service/loghelper_include/log_helper.h  |   2 +-
 .../discovery_common/src/discovery_activator.c  |   2 +-
 bundles/shell/shell/include/shell.h             |   2 +-
 bundles/shell/shell/src/dm_shell_list_command.c | 115 +++---
 cmake/cmake_celix/DockerPackaging.cmake         |   2 +-
 examples/celix-examples/CMakeLists.txt          |   2 +
 .../bar/private/src/bar_activator.c             |  13 +-
 .../foo1/private/src/foo1_activator.c           |  28 +-
 .../foo2/private/src/foo2.c                     |   2 +-
 .../foo2/private/src/foo2_activator.c           |  30 +-
 .../civetweb/src/bundle_activator.c             |   2 +-
 .../celix-examples/dm_example/CMakeLists.txt    |   1 -
 .../dm_example/phase1/src/phase1_activator.c    |  47 +--
 .../dm_example/phase1/src/phase1_cmp.c          |   6 +-
 .../dm_example/phase1/src/phase1_cmp.h          |   2 +-
 .../dm_example/phase2a/src/phase2a_activator.c  |  59 ++-
 .../dm_example/phase2b/src/phase2b_activator.c  |  60 ++-
 .../dm_example/phase3/src/phase3_activator.c    |  62 ++--
 .../dm_example/phase3/src/phase3_cmp.c          |   2 +-
 .../phase1/src/Phase1Activator.cc               |   8 +-
 .../dm_example_cxx/phase1/src/Phase1Activator.h |   1 -
 .../celix-examples/embedding/private/src/main.c |   8 +-
 .../hello_world/private/src/activator.c         |   8 +-
 .../hello_world_test/private/src/activator.c    |   8 +-
 .../log_service_example/src/activator.c         |   8 +-
 .../service_hook_example/src/activator.c        |  12 +-
 .../src/dynamic_provider_example.c              |   2 +-
 libs/dependency_manager_cxx/src/dm_activator.cc |  18 +-
 libs/framework/include/bundle.h                 |  76 ++--
 libs/framework/include/bundle_activator.h       |  16 +-
 libs/framework/include/bundle_context.h         |  54 +--
 libs/framework/include/bundle_revision.h        |   4 +-
 libs/framework/include/celix/dm/Component.h     |  20 +-
 .../framework/include/celix/dm/Component_Impl.h |  26 +-
 .../include/celix/dm/DependencyManager.h        |  16 +-
 libs/framework/include/celix/dm/DmActivator.h   |  14 +-
 .../include/celix/dm/ServiceDependency.h        |  16 +-
 .../include/celix/dm/ServiceDependency_Impl.h   |  83 ++---
 libs/framework/include/celix_api.h              |   3 +-
 libs/framework/include/celix_bundle_context.h   |   2 +-
 .../include/celix_dependency_manager.h          |  86 +++++
 libs/framework/include/celix_dm_component.h     | 154 ++++++++
 libs/framework/include/celix_dm_info.h          |  76 ++++
 .../include/celix_dm_service_dependency.h       | 169 +++++++++
 libs/framework/include/celix_framework.h        |   2 -
 .../framework/include/celix_framework_factory.h |   2 +-
 libs/framework/include/celix_launcher.h         |  14 +-
 libs/framework/include/celix_types.h            |  50 ++-
 libs/framework/include/dm_activator.h           |  12 +-
 libs/framework/include/dm_component.h           |  52 ++-
 libs/framework/include/dm_dependency_manager.h  |  18 +-
 libs/framework/include/dm_info.h                |  76 ----
 libs/framework/include/dm_service_dependency.h  |  36 +-
 libs/framework/include/framework.h              |  17 +-
 libs/framework/include/listener_hook_service.h  |   6 +-
 libs/framework/include/manifest.h               |   4 +-
 libs/framework/include/module.h                 |  12 +-
 libs/framework/include/service_reference.h      |   6 +-
 libs/framework/include/service_registration.h   |   4 +-
 libs/framework/include/service_registry.h       |  40 +-
 libs/framework/include/service_tracker.h        |  12 +-
 .../private/mock/dm_dependency_manager_mock.c   |  24 +-
 libs/framework/src/bundle_context.c             |  13 +-
 libs/framework/src/bundle_context_private.h     |   8 +-
 libs/framework/src/bundle_private.h             |   4 +-
 libs/framework/src/dm_component_impl.c          | 361 +++++++++++--------
 libs/framework/src/dm_component_impl.h          |   6 +-
 libs/framework/src/dm_dependency_manager_impl.c | 204 ++++++++---
 libs/framework/src/dm_dependency_manager_impl.h |  21 +-
 libs/framework/src/dm_service_dependency.c      | 299 +++++++++------
 libs/framework/src/dm_service_dependency_impl.h |  63 ++--
 libs/framework/src/framework.c                  |   5 +-
 libs/framework/src/framework_private.h          |   4 +-
 libs/framework/src/module.c                     |   2 +-
 libs/utils/include/array_list.h                 |  67 ++--
 libs/utils/include/celix_array_list.h           |  17 +-
 libs/utils/include/filter.h                     |   2 +-
 libs/utils/include/properties.h                 |  35 +-
 libs/utils/private/test/filter_test.cpp         |   2 +-
 libs/utils/src/array_list_private.h             |   4 +-
 libs/utils/src/filter.c                         |  79 ++--
 81 files changed, 1744 insertions(+), 1166 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/bundles/log_service/loghelper_include/log_helper.h
----------------------------------------------------------------------
diff --git a/bundles/log_service/loghelper_include/log_helper.h b/bundles/log_service/loghelper_include/log_helper.h
index 2ae9d83..5af5d77 100644
--- a/bundles/log_service/loghelper_include/log_helper.h
+++ b/bundles/log_service/loghelper_include/log_helper.h
@@ -27,7 +27,7 @@
 typedef struct log_helper log_helper_t;
 typedef struct log_helper* log_helper_pt;
 
-celix_status_t logHelper_create(bundle_context_pt context, log_helper_pt* log_helper);
+celix_status_t logHelper_create(celix_bundle_context_t *context, log_helper_pt* log_helper);
 celix_status_t logHelper_start(log_helper_pt loghelper);
 celix_status_t logHelper_stop(log_helper_pt loghelper);
 celix_status_t logHelper_destroy(log_helper_pt* loghelper);

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/bundles/remote_services/discovery_common/src/discovery_activator.c
----------------------------------------------------------------------
diff --git a/bundles/remote_services/discovery_common/src/discovery_activator.c b/bundles/remote_services/discovery_common/src/discovery_activator.c
index 3267d25..30a40b3 100644
--- a/bundles/remote_services/discovery_common/src/discovery_activator.c
+++ b/bundles/remote_services/discovery_common/src/discovery_activator.c
@@ -62,7 +62,7 @@ celix_status_t bundleActivator_createEPLTracker(struct activator *activator, ser
 	return status;
 }
 
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
+celix_status_t bundleActivator_create(celix_bundle_context_t *context, void **userData) {
 	celix_status_t status;
 
 	struct activator* activator = calloc(1,sizeof(struct activator));

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/bundles/shell/shell/include/shell.h
----------------------------------------------------------------------
diff --git a/bundles/shell/shell/include/shell.h b/bundles/shell/shell/include/shell.h
index c8e7d60..42c2cdb 100644
--- a/bundles/shell/shell/include/shell.h
+++ b/bundles/shell/shell/include/shell.h
@@ -38,7 +38,7 @@ typedef shell_t* shell_pt;
 struct shellService {
 	shell_pt shell;
 
-	celix_status_t (*getCommands)(shell_pt shell_ptr, array_list_pt *commands_ptr);
+	celix_status_t (*getCommands)(shell_pt shell_ptr, celix_array_list_t **commands_ptr);
 	celix_status_t (*getCommandUsage)(shell_pt shell_ptr, char *command_name_str, char **usage_str);
 	celix_status_t (*getCommandDescription)(shell_pt shell_ptr, char *command_name_str, char **command_description_str);
 	celix_status_t (*getCommandReference)(shell_pt shell_ptr, char *command_name_str, service_reference_pt *command_reference_ptr);

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/bundles/shell/shell/src/dm_shell_list_command.c
----------------------------------------------------------------------
diff --git a/bundles/shell/shell/src/dm_shell_list_command.c b/bundles/shell/shell/src/dm_shell_list_command.c
index aeb7afd..192f875 100644
--- a/bundles/shell/shell/src/dm_shell_list_command.c
+++ b/bundles/shell/shell/src/dm_shell_list_command.c
@@ -21,7 +21,7 @@
 #include <string.h>
 #include <shell_constants.h>
 #include "celix_bundle_context.h"
-#include "dm_dependency_manager.h"
+#include "celix_dependency_manager.h"
 
 
 static const char * const OK_COLOR = "\033[92m";
@@ -29,21 +29,19 @@ static const char * const WARNING_COLOR = "\033[93m";
 static const char * const NOK_COLOR = "\033[91m";
 static const char * const END_COLOR = "\033[m";
 
-static void parseCommandLine(const char*line, array_list_pt *requestedBundleIds, bool *fullInfo, FILE *err) {
+static void parseCommandLine(const char*line, celix_array_list_t **requestedBundleIds, bool *fullInfo, FILE *err) {
     *fullInfo = false;
     char *str = strdup(line);
     // skip first argument since this is the command
     strtok(str," ");
     char* tok = strtok(NULL," ");
-    *requestedBundleIds = NULL;
-    arrayList_create(requestedBundleIds);
+    *requestedBundleIds = celix_arrayList_create();
     while (tok) {
         if (tok[0] == 'f') { // f or full argument => show full info
             *fullInfo = true;
         } else if ( (tok[0] >= '0') && (tok[0] <= '9')) { // bundle id
-            long *id = malloc(sizeof(*id));
-            *id = strtol(tok, NULL, 10);
-            arrayList_add(*requestedBundleIds, id);
+            long id = strtol(tok, NULL, 10);
+            celix_arrayList_addLong(*requestedBundleIds, id);
         } else {
             fprintf (err, "DM: Skipping unknown argument: %s", tok );
         }
@@ -52,34 +50,6 @@ static void parseCommandLine(const char*line, array_list_pt *requestedBundleIds,
     free (str);
 }
 
-static void destroyBundleIdList(array_list_pt ids) {
-    unsigned int size = arrayList_size(ids);
-    for (unsigned int i = 0; i < size; i++) {
-        free(arrayList_get(ids, i));
-    }
-    arrayList_destroy(ids);
-}
-
-/*
- * Check if the ID is in the array list. If  arrayist is empty also true is returned so that all
- * bundles are shown
- */
-static bool is_bundleId_in_list(array_list_pt ids, long id) {
-    unsigned int size = arrayList_size(ids);
-    bool result = false;
-    if (size == 0) {
-        result = true;
-    }
-    for(unsigned int i = 0; i < size; ++i) {
-        if (*((long*)arrayList_get(ids, i))  == id) {
-            result = true;
-            break;
-        }
-    }
-    return result;
-}
-
-
 static void printFullInfo(FILE *out, bool colors, dm_component_info_pt compInfo) {
     const char *startColors = "";
     const char *endColors = "";
@@ -136,58 +106,55 @@ static void printBasicInfo(FILE *out, bool colors, dm_component_info_pt compInfo
 
 }
 
-celix_status_t dmListCommand_execute(void* handle, char * line, FILE *out, FILE *err) {
-    bundle_context_t *ctx = handle;
+static void dm_printInfo(FILE *out, bool useColors, bool fullInfo, celix_dependency_manager_info_t *info) {
+    if (info != NULL) {
+        int size = celix_arrayList_size(info->components);
+        if (size > 0) {
+            fprintf(out, "[Bundle: %ld]\n", info->bndId);
+            for (unsigned int cmpCnt = 0; cmpCnt < size; cmpCnt++) {
+                dm_component_info_pt compInfo = celix_arrayList_get(info->components, cmpCnt);
+                if (fullInfo) {
+                    printFullInfo(out, useColors, compInfo);
+                } else {
+                    printBasicInfo(out, useColors, compInfo);
+                }
+            }
+            fprintf(out, "\n");
+        }
+    }
+}
 
-    array_list_t *bundles = NULL;
-    bundleContext_getBundles(ctx, &bundles);
+celix_status_t dmListCommand_execute(void* handle, char * line, FILE *out, FILE *err) {
+    celix_bundle_context_t *ctx = handle;
+    celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
 
     const char *config = NULL;
     bundleContext_getPropertyWithDefault(ctx, SHELL_USE_ANSI_COLORS, SHELL_USE_ANSI_COLORS_DEFAULT_VALUE, &config);
     bool useColors = config != NULL && strncmp("true", config, 5) == 0;
 
-    array_list_pt bundleIds = NULL;
+    celix_array_list_t *bundleIds = NULL;
     bool fullInfo = false;
     parseCommandLine(line, &bundleIds, &fullInfo, err);
 
-    if (bundles != NULL) {
-        unsigned int size = arrayList_size(bundles);
-        for (unsigned int i = 0; i < size; ++i) {
-            long bndId = -1;
-            bundle_t *bnd = arrayList_get(bundles, i);
-            bundle_getBundleId(bnd, &bndId);
-            if (!is_bundleId_in_list(bundleIds, bndId)) {
-                continue;
-            }
-            bundle_context_t *bndCtx = NULL;
-            bundle_getContext(bnd, &bndCtx);
-            if (bndCtx != NULL) {
-                dm_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(bndCtx);
-                dm_dependency_manager_info_t *info = NULL;
-                dependencyManager_getInfo(mng, &info);
-                if (info != NULL) {
-                    size_t size = celix_arrayList_size(info->components);
-                    if (size > 0) {
-                        fprintf(out, "[Bundle: %ld]\n", bndId);
-                        for (unsigned int cmpCnt = 0; cmpCnt < size; cmpCnt++) {
-                            dm_component_info_pt compInfo = celix_arrayList_get(info->components, cmpCnt);
-                            if (fullInfo) {
-                                printFullInfo(out, useColors, compInfo);
-                            } else {
-                                printBasicInfo(out, useColors, compInfo);
-                            }
-                        }
-                        fprintf(out, "\n");
-                    }
-                    dependencyManager_destroyInfo(mng, info);
-                }
-
+    if (celix_arrayList_size(bundleIds) == 0) {
+        celix_array_list_t *infos = celix_dependencyManager_createInfos(mng);
+        for (int i = 0; i < celix_arrayList_size(infos); ++i) {
+            celix_dependency_manager_info_t *info = celix_arrayList_get(infos, i);
+            dm_printInfo(out, useColors, fullInfo, info);
+        }
+        celix_dependencyManager_destroyInfos(mng, infos);
+    } else {
+        for (int i = 0; i < celix_arrayList_size(bundleIds); ++i) {
+            long bndId = celix_arrayList_getLong(bundleIds, i);
+            celix_dependency_manager_info_t *info = celix_dependencyManager_createInfo(mng, bndId);
+            if (info != NULL) {
+                dm_printInfo(out, useColors, fullInfo, info);
+                celix_dependencyManager_destroyInfo(mng, info);
             }
         }
-        arrayList_destroy(bundles);
     }
 
-    destroyBundleIdList(bundleIds);
+    celix_arrayList_destroy(bundleIds);
 
     return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/cmake/cmake_celix/DockerPackaging.cmake
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/DockerPackaging.cmake b/cmake/cmake_celix/DockerPackaging.cmake
index cdc46c9..8556917 100644
--- a/cmake/cmake_celix/DockerPackaging.cmake
+++ b/cmake/cmake_celix/DockerPackaging.cmake
@@ -111,7 +111,7 @@ int main(int argc, char *argv[]) {
 $<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_EMBEDDED_PROPERTIES>,\\n\\
 >\";
 
-    properties_pt packedConfig = properties_loadFromString(config);
+    celix_properties_t *packedConfig = properties_loadFromString(config);
     return celixLauncher_launchAndWaitForShutdown(argc, argv, packedConfig);
 }
 "

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/celix-examples/CMakeLists.txt b/examples/celix-examples/CMakeLists.txt
index 86ed757..e7ce308 100644
--- a/examples/celix-examples/CMakeLists.txt
+++ b/examples/celix-examples/CMakeLists.txt
@@ -21,6 +21,8 @@ else ()
     set(EXAMPLES true) #celix_subproject is only available in the celix project -> using examples dir in other project is also supported
 endif ()
 if (EXAMPLES)
+    add_compile_definitions(ADD_CELIX_DEPRECATED_WARNING) #ensure that no deprecated api is used in the examples
+
     add_subdirectory(bundle_example_c)
 
     add_subdirectory(hello_world)

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/best_practice_example_c/bar/private/src/bar_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/best_practice_example_c/bar/private/src/bar_activator.c b/examples/celix-examples/best_practice_example_c/bar/private/src/bar_activator.c
index 39d0164..25e82b0 100644
--- a/examples/celix-examples/best_practice_example_c/bar/private/src/bar_activator.c
+++ b/examples/celix-examples/best_practice_example_c/bar/private/src/bar_activator.c
@@ -17,7 +17,7 @@
  *under the License.
  */
 
-#include "dm_activator.h"
+#include "celix_api.h"
 #include "bar.h"
 
 #include <stdlib.h>
@@ -35,17 +35,16 @@ static celix_status_t activator_start(activator_t *act, celix_bundle_context_t *
 	if (act->bar == NULL) {
 		status = CELIX_ENOMEM;
 	} else {
-		dm_component_pt cmp = NULL;
-		component_create(ctx, "BAR", &cmp);
-		component_setImplementation(cmp, act->bar);
-		component_addInterface(cmp, EXAMPLE_NAME, EXAMPLE_VERSION, &act->exampleService, NULL);
-		dependencyManager_add(celix_bundleContext_getDependencyManager(ctx), cmp);
+		celix_dm_component_t *cmp = celix_dmComponent_create(ctx, "BAR");
+        celix_dmComponent_setImplementation(cmp, act->bar);
+        celix_dmComponent_addInterface(cmp, EXAMPLE_NAME, EXAMPLE_VERSION, &act->exampleService, NULL);
+		celix_dependencyManager_add(celix_bundleContext_getDependencyManager(ctx), cmp);
 	}
 	return status;
 }
 
 static celix_status_t activator_stop(activator_t *act, celix_bundle_context_t *ctx) {
-	dependencyManager_removeAllComponents(celix_bundleContext_getDependencyManager(ctx));
+	celix_dependencyManager_removeAllComponents(celix_bundleContext_getDependencyManager(ctx));
 	bar_destroy(act->bar);
 	return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/best_practice_example_c/foo1/private/src/foo1_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/best_practice_example_c/foo1/private/src/foo1_activator.c b/examples/celix-examples/best_practice_example_c/foo1/private/src/foo1_activator.c
index 61783ef..4098117 100644
--- a/examples/celix-examples/best_practice_example_c/foo1/private/src/foo1_activator.c
+++ b/examples/celix-examples/best_practice_example_c/foo1/private/src/foo1_activator.c
@@ -17,7 +17,7 @@
  *under the License.
  */
 
-#include "dm_activator.h"
+#include "celix_api.h"
 #include "foo1.h"
 
 #include <stdlib.h>
@@ -32,21 +32,19 @@ static celix_status_t activator_start(activator_t *act, celix_bundle_context_t *
 	if (act->foo == NULL) {
 		status = CELIX_ENOMEM;
 	} else {
-		dm_component_pt cmp = NULL;
-		component_create(ctx, "FOO1", &cmp);
-		component_setImplementation(cmp, act->foo);
+		celix_dm_component_t *cmp = celix_dmComponent_create(ctx, "FOO1");
+		celix_dmComponent_setImplementation(cmp, act->foo);
 
 		/*
         With the component_setCallbacksSafe we register callbacks when a component is started / stopped using a component
          with type foo1_t*
         */
-		component_setCallbacksSafe(cmp, foo1_t*, NULL, foo1_start, foo1_stop, NULL);
+		CELIX_DMCOMPONENT_SETCALLBACKS(cmp, foo1_t*, NULL, foo1_start, foo1_stop, NULL);
 
-		dm_service_dependency_pt dep = NULL;
-		serviceDependency_create(&dep);
-		serviceDependency_setRequired(dep, true);
-		serviceDependency_setService(dep, EXAMPLE_NAME, EXAMPLE_CONSUMER_RANGE, NULL);
-		serviceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING);
+		celix_dm_service_dependency_t *dep = celix_dmServiceDependency_create();
+		celix_dmServiceDependency_setRequired(dep, true);
+		celix_dmServiceDependency_setService(dep, EXAMPLE_NAME, EXAMPLE_CONSUMER_RANGE, NULL);
+		celix_dmServiceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING);
 
 		/*
         With the serviceDependency_setCallbacksSafe we register callbacks when a service
@@ -56,17 +54,19 @@ static celix_status_t activator_start(activator_t *act, celix_bundle_context_t *
          service because after removal of the service the memory location of that service
         could be freed
         */
-		serviceDependency_setCallbacksSafe(dep, foo1_t*, const example_t*, foo1_setExample, NULL, NULL, NULL, NULL);
-		component_addServiceDependency(cmp, dep);
+		celix_dm_service_dependency_callback_options_t opts = CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS;
+		opts.set = (void*)foo1_setExample;
+		celix_dmServiceDependency_setCallbacksWithOptions(dep, &opts);
+        celix_dmComponent_addServiceDependency(cmp, dep);
 
-		dependencyManager_add(celix_bundleContext_getDependencyManager(ctx), cmp);
+		celix_dependencyManager_add(celix_bundleContext_getDependencyManager(ctx), cmp);
 
 	}
 	return status;
 }
 
 static celix_status_t activator_stop(activator_t *act, celix_bundle_context_t *ctx) {
-	dependencyManager_removeAllComponents(celix_bundleContext_getDependencyManager(ctx));
+	celix_dependencyManager_removeAllComponents(celix_bundleContext_getDependencyManager(ctx));
 	foo1_destroy(act->foo);
 	return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2.c b/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2.c
index b98e20b..4a1482c 100644
--- a/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2.c
+++ b/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2.c
@@ -37,7 +37,7 @@
 static void* foo2_thread(void*);
 
 struct foo2_struct {
-    array_list_pt examples;
+    celix_array_list_t *examples;
     pthread_t thread;
     bool running;
 };

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2_activator.c b/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2_activator.c
index 309b8c1..9765e35 100644
--- a/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2_activator.c
+++ b/examples/celix-examples/best_practice_example_c/foo2/private/src/foo2_activator.c
@@ -17,7 +17,7 @@
  *under the License.
  */
 
-#include "dm_activator.h"
+#include "celix_api.h"
 #include "foo2.h"
 
 #include <stdlib.h>
@@ -33,21 +33,19 @@ static celix_status_t activator_start(struct activator *act, celix_bundle_contex
 		status = CELIX_ENOMEM;
 	} else {
 
-		dm_component_pt cmp = NULL;
-		component_create(ctx, "FOO2", &cmp);
-		component_setImplementation(cmp, act->foo);
+		celix_dm_component_t *cmp = celix_dmComponent_create(ctx, "FOO2");
+		celix_dmComponent_setImplementation(cmp, act->foo);
 
 		/*
 		With the component_setCallbacksSafe we register callbacks when a component is started / stopped using a component
 		 with type foo1_t*
 		*/
-		component_setCallbacksSafe(cmp, foo2_t*, NULL, foo2_start, foo2_stop, NULL);
+		CELIX_DMCOMPONENT_SETCALLBACKS(cmp, foo2_t*, NULL, foo2_start, foo2_stop, NULL);
 
-		dm_service_dependency_pt dep = NULL;
-		serviceDependency_create(&dep);
-		serviceDependency_setRequired(dep, false);
-		serviceDependency_setService(dep, EXAMPLE_NAME, EXAMPLE_CONSUMER_RANGE, NULL);
-		serviceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND);
+		celix_dm_service_dependency_t *dep = celix_dmServiceDependency_create();
+		celix_dmServiceDependency_setRequired(dep, false);
+		celix_dmServiceDependency_setService(dep, EXAMPLE_NAME, EXAMPLE_CONSUMER_RANGE, NULL);
+		celix_dmServiceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND);
 
 		/*
 		With the serviceDependency_setCallbacksSafe we register callbacks when a service
@@ -57,18 +55,20 @@ static celix_status_t activator_start(struct activator *act, celix_bundle_contex
 		service because after removal of the service the memory location of that service
 		could be freed
 		*/
-		serviceDependency_setCallbacksSafe(dep, foo2_t*, const example_t*, NULL, foo2_addExample, NULL,
-										   foo2_removeExample, NULL);
-		component_addServiceDependency(cmp, dep);
+		celix_dm_service_dependency_callback_options_t opts = CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS;
+		opts.add = (void*)foo2_addExample;
+		opts.remove = (void*)foo2_removeExample;
+		celix_dmServiceDependency_setCallbacksWithOptions(dep, &opts);
+		celix_dmComponent_addServiceDependency(cmp, dep);
 
-		dependencyManager_add(celix_bundleContext_getDependencyManager(ctx), cmp);
+		celix_dependencyManager_add(celix_bundleContext_getDependencyManager(ctx), cmp);
 	}
 
 	return status;
 }
 
 static celix_status_t activator_stop(struct activator *act, celix_bundle_context_t *ctx) {
-	dependencyManager_removeAllComponents(celix_bundleContext_getDependencyManager(ctx));
+	celix_dependencyManager_removeAllComponents(celix_bundleContext_getDependencyManager(ctx));
 	foo2_destroy(act->foo);
 	return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/civetweb/src/bundle_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/civetweb/src/bundle_activator.c b/examples/celix-examples/civetweb/src/bundle_activator.c
index 17892fb..3dcd490 100644
--- a/examples/celix-examples/civetweb/src/bundle_activator.c
+++ b/examples/celix-examples/civetweb/src/bundle_activator.c
@@ -74,7 +74,7 @@ static int websocket_data_handler(struct mg_connection *conn, int bits, char *da
 static celix_status_t activator_start(activator_data_t *data, celix_bundle_context_t *ctx) {
     data->ctx = ctx;
 
-    bundle_t *bnd = celix_bundleContext_getBundle(ctx);
+    celix_bundle_t *bnd = celix_bundleContext_getBundle(ctx);
     data->root = celix_bundle_getEntry(bnd, "resources");
 
     const char *options[] = {

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/CMakeLists.txt b/examples/celix-examples/dm_example/CMakeLists.txt
index 581a17c..a3986f8 100644
--- a/examples/celix-examples/dm_example/CMakeLists.txt
+++ b/examples/celix-examples/dm_example/CMakeLists.txt
@@ -22,7 +22,6 @@ add_subdirectory(phase2a)
 add_subdirectory(phase2b)
 add_subdirectory(phase3)
 
-
 add_celix_container(dm_example
     COPY
     BUNDLES

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase1/src/phase1_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase1/src/phase1_activator.c b/examples/celix-examples/dm_example/phase1/src/phase1_activator.c
index 31dcb16..985002a 100644
--- a/examples/celix-examples/dm_example/phase1/src/phase1_activator.c
+++ b/examples/celix-examples/dm_example/phase1/src/phase1_activator.c
@@ -26,8 +26,7 @@
 #include <stdlib.h>
 #include <phase1_cmp.h>
 
-#include "bundle_activator.h"
-#include "dm_activator.h"
+#include "celix_api.h"
 
 #include "phase1.h"
 
@@ -36,51 +35,41 @@ struct phase1_activator_struct {
 	phase1_t phase1Serv;
 };
 
-celix_status_t dm_create(bundle_context_pt context, void **userData) {
-	printf("PHASE1: dm_create\n");
-	*userData = calloc(1, sizeof(struct phase1_activator_struct));
-	return *userData != NULL ? CELIX_SUCCESS : CELIX_ENOMEM;
-}
-
-celix_status_t dm_init(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("PHASE1: dm_init\n");
-    celix_status_t status = CELIX_SUCCESS;
-
-
-    struct phase1_activator_struct *act = (struct phase1_activator_struct *)userData;
-
+static celix_status_t start(struct phase1_activator_struct *act, celix_bundle_context_t *ctx) {
+	celix_status_t status = CELIX_SUCCESS;
+	printf("PHASE1: start\n");
 	act->phase1Cmp = phase1_create();
 	if (act->phase1Cmp != NULL) {
 
 		act->phase1Serv.handle = act->phase1Cmp;
 		act->phase1Serv.getData = (void *)phase1_getData;
 
-		properties_pt props = properties_create();
+		celix_properties_t *props = properties_create();
 		properties_set(props, "id", "phase1");
 
-		dm_component_pt cmp;
-		component_create(context, "PHASE1_PROCESSING_COMPONENT", &cmp);
-		component_setImplementation(cmp, act->phase1Cmp);
-		component_setCallbacksSafe(cmp, phase1_cmp_t *, phase1_init, phase1_start, phase1_stop, phase1_deinit);
+		celix_dm_component_t *cmp= celix_dmComponent_create(ctx, "PHASE1_PROCESSING_COMPONENT");
+		celix_dmComponent_setImplementation(cmp, act->phase1Cmp);
+		CELIX_DMCOMPONENT_SETCALLBACKS(cmp, phase1_cmp_t *, phase1_init, phase1_start, phase1_stop, phase1_deinit);
 		phase1_setComp(act->phase1Cmp, cmp);
-		component_addInterface(cmp, PHASE1_NAME, PHASE1_VERSION, &act->phase1Serv, props);
+		celix_dmComponent_addInterface(cmp, PHASE1_NAME, PHASE1_VERSION, &act->phase1Serv, props);
 
-		dependencyManager_add(manager, cmp);
+		celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+		celix_dependencyManager_add(mng, cmp);
 	} else {
 		status = CELIX_ENOMEM;
 	}
-
-    return status;
+	return status;
 }
 
-celix_status_t dm_destroy(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("PHASE1: dm-destroy\n");
-
-	struct phase1_activator_struct *act = (struct phase1_activator_struct *)userData;
+static celix_status_t stop(struct phase1_activator_struct *act, celix_bundle_context_t *ctx) {
+	printf("PHASE1: stop\n");
+	celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+	celix_dependencyManager_removeAllComponents(mng);
 	if (act->phase1Cmp != NULL) {
 		phase1_destroy(act->phase1Cmp);
 	}
-	free(act);
 
 	return CELIX_SUCCESS;
 }
+
+CELIX_GEN_BUNDLE_ACTIVATOR(struct phase1_activator_struct, start, stop);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase1/src/phase1_cmp.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase1/src/phase1_cmp.c b/examples/celix-examples/dm_example/phase1/src/phase1_cmp.c
index 40da821..e27dcb7 100644
--- a/examples/celix-examples/dm_example/phase1/src/phase1_cmp.c
+++ b/examples/celix-examples/dm_example/phase1/src/phase1_cmp.c
@@ -39,7 +39,7 @@ struct phase1_cmp_struct {
 	celix_thread_t thread;
     bool running;
 	unsigned int counter;
-	dm_component_pt component;
+	celix_dm_component_t *component;
 
 };
 
@@ -54,7 +54,7 @@ phase1_cmp_t *phase1_create(void) {
 	return cmp;
 }
 
-void phase1_setComp(phase1_cmp_t *cmp, dm_component_pt dmCmp) {
+void phase1_setComp(phase1_cmp_t *cmp, celix_dm_component_t *dmCmp) {
 	cmp->component = dmCmp;
 }
 
@@ -95,7 +95,7 @@ static void *phase1_thread(void *data) {
         cmp->counter += 1;
         if (cmp->counter == 2) {
         	static char *runtime_interface = "DUMMY INTERFACE: DO NOT USE\n";
-        	component_addInterface(cmp->component, "RUNTIME_ADDED_INTERFACE", "1.0.0", runtime_interface, NULL);
+            celix_dmComponent_addInterface(cmp->component, "RUNTIME_ADDED_INTERFACE", "1.0.0", runtime_interface, NULL);
         }
         usleep(SLEEPTIME);
     }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase1/src/phase1_cmp.h
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase1/src/phase1_cmp.h b/examples/celix-examples/dm_example/phase1/src/phase1_cmp.h
index 153eed1..002ece8 100644
--- a/examples/celix-examples/dm_example/phase1/src/phase1_cmp.h
+++ b/examples/celix-examples/dm_example/phase1/src/phase1_cmp.h
@@ -31,7 +31,7 @@
 typedef struct phase1_cmp_struct phase1_cmp_t;
 
 phase1_cmp_t *phase1_create(void);
-void phase1_setComp(phase1_cmp_t *cmp, dm_component_pt dmCmp);
+void phase1_setComp(phase1_cmp_t *cmp, celix_dm_component_t *dmCmp);
 int phase1_init(phase1_cmp_t *cmp);
 int phase1_start(phase1_cmp_t *cmp);
 int phase1_stop(phase1_cmp_t *cmp);

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase2a/src/phase2a_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase2a/src/phase2a_activator.c b/examples/celix-examples/dm_example/phase2a/src/phase2a_activator.c
index 6fa6919..04c0512 100644
--- a/examples/celix-examples/dm_example/phase2a/src/phase2a_activator.c
+++ b/examples/celix-examples/dm_example/phase2a/src/phase2a_activator.c
@@ -20,8 +20,7 @@
 #include <stdlib.h>
 #include <phase2a_cmp.h>
 
-#include "bundle_activator.h"
-#include "dm_activator.h"
+#include "celix_api.h"
 
 #include "phase1.h"
 #include "phase2.h"
@@ -32,58 +31,48 @@ struct phase2a_activator_struct {
 	phase2_t phase2Serv;
 };
 
-celix_status_t dm_create(bundle_context_pt context, void **userData) {
-	printf("phase2a: dm_create\n");
-	*userData = calloc(1, sizeof(struct phase2a_activator_struct));
-	return *userData != NULL ? CELIX_SUCCESS : CELIX_ENOMEM;
-}
-
-celix_status_t dm_init(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("phase2a: dm_init\n");
-    celix_status_t status = CELIX_SUCCESS;
-
-    struct phase2a_activator_struct *act = (struct phase2a_activator_struct *)userData;
-
+static celix_status_t start(struct phase2a_activator_struct *act, celix_bundle_context_t *ctx) {
+	printf("phase2a: start\n");
+	celix_status_t status = CELIX_SUCCESS;
 	act->phase2aCmp = phase2a_create();
 	if (act->phase2aCmp != NULL) {
 
 		act->phase2Serv.handle = act->phase2aCmp;
 		act->phase2Serv.getData = (void *)phase2a_getData;
 
-		properties_pt props = properties_create();
+		celix_properties_t *props = properties_create();
 		properties_set(props, "id", "phase2a");
 
-		dm_component_pt cmp;
-		component_create(context, "PHASE2A_PROCESSING_COMPONENT", &cmp);
-		component_setImplementation(cmp, act->phase2aCmp);
-		component_setCallbacksSafe(cmp, phase2a_cmp_t *, phase2a_init, phase2a_start, phase2a_stop, phase2a_deinit);
-		component_addInterface(cmp, PHASE2_NAME, PHASE2_VERSION, &act->phase2Serv, props);
+		celix_dm_component_t *cmp = celix_dmComponent_create(ctx, "PHASE2A_PROCESSING_COMPONENT");
+		celix_dmComponent_setImplementation(cmp, act->phase2aCmp);
+		CELIX_DMCOMPONENT_SETCALLBACKS(cmp, phase2a_cmp_t *, phase2a_init, phase2a_start, phase2a_stop, phase2a_deinit);
+		celix_dmComponent_addInterface(cmp, PHASE2_NAME, PHASE2_VERSION, &act->phase2Serv, props);
 
 
-		dm_service_dependency_pt dep;
-		serviceDependency_create(&dep);
-		serviceDependency_setService(dep, PHASE1_NAME, PHASE1_RANGE_ALL, NULL);
-        serviceDependency_setCallbacksSafe(dep, phase2a_cmp_t*, const phase1_t*, phase2a_setPhase1, NULL, NULL, NULL, NULL);
-		serviceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING);
-		serviceDependency_setRequired(dep, true);
-		component_addServiceDependency(cmp, dep);
+		celix_dm_service_dependency_t *dep = celix_dmServiceDependency_create();
+        celix_dmServiceDependency_setService(dep, PHASE1_NAME, PHASE1_RANGE_ALL, NULL);
+        celix_dmServiceDependency_setCallback(dep, (void*)phase2a_setPhase1);
+        celix_dmServiceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING);
+        celix_dmServiceDependency_setRequired(dep, true);
+		celix_dmComponent_addServiceDependency(cmp, dep);
 
-		dependencyManager_add(manager, cmp);
+		celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+		celix_dependencyManager_add(mng, cmp);
 	} else {
 		status = CELIX_ENOMEM;
 	}
 
-    return status;
+	return status;
 }
 
-celix_status_t dm_destroy(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("phase2a: dm-destroy\n");
-
-	struct phase2a_activator_struct *act = (struct phase2a_activator_struct *)userData;
+static celix_status_t stop(struct phase2a_activator_struct *act, celix_bundle_context_t *ctx) {
+	printf("phase2a: stop\n");
+    celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+    celix_dependencyManager_removeAllComponents(mng);
 	if (act->phase2aCmp != NULL) {
 		phase2a_destroy(act->phase2aCmp);
 	}
-	free(act);
-
 	return CELIX_SUCCESS;
 }
+
+CELIX_GEN_BUNDLE_ACTIVATOR(struct phase2a_activator_struct, start, stop)

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase2b/src/phase2b_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase2b/src/phase2b_activator.c b/examples/celix-examples/dm_example/phase2b/src/phase2b_activator.c
index c7692d4..328b48a 100644
--- a/examples/celix-examples/dm_example/phase2b/src/phase2b_activator.c
+++ b/examples/celix-examples/dm_example/phase2b/src/phase2b_activator.c
@@ -26,8 +26,7 @@
 #include <stdlib.h>
 #include <phase2b_cmp.h>
 
-#include "bundle_activator.h"
-#include "dm_activator.h"
+#include "celix_api.h"
 
 #include "phase1.h"
 #include "phase2.h"
@@ -38,58 +37,49 @@ struct phase2b_activator_struct {
 	phase2_t phase2Serv;
 };
 
-celix_status_t dm_create(bundle_context_pt context, void **userData) {
-	printf("phase2b: dm_create\n");
-	*userData = calloc(1, sizeof(struct phase2b_activator_struct));
-	return *userData != NULL ? CELIX_SUCCESS : CELIX_ENOMEM;
-}
-
-celix_status_t dm_init(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("phase2b: dm_init\n");
-    celix_status_t status = CELIX_SUCCESS;
-
-    struct phase2b_activator_struct *act = (struct phase2b_activator_struct *)userData;
-
+static celix_status_t start(struct phase2b_activator_struct *act, celix_bundle_context_t *ctx) {
+	printf("phase2b: start\n");
+	celix_status_t status = CELIX_SUCCESS;
 	act->phase2bCmp = phase2b_create();
 	if (act->phase2bCmp != NULL) {
 
 		act->phase2Serv.handle = act->phase2bCmp;
 		act->phase2Serv.getData = (void *)phase2b_getData;
 
-		properties_pt props = properties_create();
+		celix_properties_t *props = properties_create();
 		properties_set(props, "id", "phase2b");
 
-		dm_component_pt cmp;
-		component_create(context, "PHASE2B_PROCESSING_COMPONENT", &cmp);
-		component_setImplementation(cmp, act->phase2bCmp);
-		component_setCallbacksSafe(cmp, phase2b_cmp_t *, phase2b_init, phase2b_start, phase2b_stop, phase2b_deinit);
-		component_addInterface(cmp, PHASE2_NAME, PHASE2_VERSION, &act->phase2Serv, props);
+		celix_dm_component_t *cmp = celix_dmComponent_create(ctx, "PHASE2B_PROCESSING_COMPONENT");
+		celix_dmComponent_setImplementation(cmp, act->phase2bCmp);
+		CELIX_DMCOMPONENT_SETCALLBACKS(cmp, phase2b_cmp_t *, phase2b_init, phase2b_start, phase2b_stop, phase2b_deinit);
+		celix_dmComponent_addInterface(cmp, PHASE2_NAME, PHASE2_VERSION, &act->phase2Serv, props);
 
 
-		dm_service_dependency_pt dep;
-		serviceDependency_create(&dep);
-		serviceDependency_setService(dep, PHASE1_NAME, PHASE1_RANGE_EXACT, NULL);
-		serviceDependency_setCallbacksSafe(dep, phase2b_cmp_t*, const phase1_t*, phase2b_setPhase1, NULL, NULL, NULL, NULL);
-		serviceDependency_setRequired(dep, true);
-		serviceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING);
-		component_addServiceDependency(cmp, dep);
+		celix_dm_service_dependency_t *dep = celix_dmServiceDependency_create();
+		celix_dmServiceDependency_setService(dep, PHASE1_NAME, PHASE1_RANGE_EXACT, NULL);
+		celix_dmServiceDependency_setCallback(dep, (void*)phase2b_setPhase1);
+		celix_dmServiceDependency_setRequired(dep, true);
+		celix_dmServiceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING);
+		celix_dmComponent_addServiceDependency(cmp, dep);
 
-		dependencyManager_add(manager, cmp);
+		celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+		celix_dependencyManager_add(mng, cmp);
 	} else {
 		status = CELIX_ENOMEM;
 	}
 
-    return status;
+	return status;
 }
 
-celix_status_t dm_destroy(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("phase2b: dm-destroy\n");
-
-	struct phase2b_activator_struct *act = (struct phase2b_activator_struct *)userData;
+static celix_status_t stop(struct phase2b_activator_struct *act, celix_bundle_context_t *ctx) {
+	printf("phase2b: stop\n");
+	celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+	celix_dependencyManager_removeAllComponents(mng);
 	if (act->phase2bCmp != NULL) {
 		phase2b_destroy(act->phase2bCmp);
 	}
-	free(act);
-
 	return CELIX_SUCCESS;
 }
+
+
+CELIX_GEN_BUNDLE_ACTIVATOR(struct phase2b_activator_struct, start, stop)

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase3/src/phase3_activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase3/src/phase3_activator.c b/examples/celix-examples/dm_example/phase3/src/phase3_activator.c
index 64b7a0b..7401776 100644
--- a/examples/celix-examples/dm_example/phase3/src/phase3_activator.c
+++ b/examples/celix-examples/dm_example/phase3/src/phase3_activator.c
@@ -25,8 +25,7 @@
  */
 #include <stdlib.h>
 
-#include "bundle_activator.h"
-#include "dm_activator.h"
+#include "celix_api.h"
 
 #include "phase2.h"
 #include "phase3_cmp.h"
@@ -35,50 +34,45 @@ struct phase3_activator_struct {
     phase3_cmp_t *phase3Cmp;
 };
 
-celix_status_t dm_create(bundle_context_pt context, void **userData) {
-	printf("phase3: dm_create\n");
-	*userData = calloc(1, sizeof(struct phase3_activator_struct));
-	return *userData != NULL ? CELIX_SUCCESS : CELIX_ENOMEM;
-}
-
-celix_status_t dm_init(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("phase3: dm_init\n");
-    celix_status_t status = CELIX_SUCCESS;
-
-    struct phase3_activator_struct *act = (struct phase3_activator_struct *)userData;
-
+static celix_status_t start(struct phase3_activator_struct *act, celix_bundle_context_t *ctx) {
+	celix_status_t status = CELIX_SUCCESS;
+	printf("phase3: start\n");
 	act->phase3Cmp = phase3_create();
 	if (act->phase3Cmp != NULL) {
 
-		dm_component_pt cmp;
-		component_create(context, "PHASE3_PROCESSING_COMPONENT", &cmp);
-		component_setImplementation(cmp, act->phase3Cmp);
-		component_setCallbacksSafe(cmp, phase3_cmp_t *, phase3_init, phase3_start, phase3_stop, phase3_deinit);
+		celix_dm_component_t *cmp = celix_dmComponent_create(ctx, "PHASE3_PROCESSING_COMPONENT");
+		celix_dmComponent_setImplementation(cmp, act->phase3Cmp);
+		CELIX_DMCOMPONENT_SETCALLBACKS(cmp, phase3_cmp_t *, phase3_init, phase3_start, phase3_stop, phase3_deinit);
 
-		dm_service_dependency_pt dep;
-		serviceDependency_create(&dep);
-		serviceDependency_setService(dep, PHASE2_NAME, NULL, NULL);
-		serviceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND); //SUSPEND Strategy is default
-        serviceDependency_setCallbacksSafe(dep, phase3_cmp_t*, const phase2_t*, NULL, phase3_addPhase2, NULL, phase3_removePhase2, NULL);
-		serviceDependency_setRequired(dep, true);
-		component_addServiceDependency(cmp, dep);
+		celix_dm_service_dependency_t *dep = celix_dmServiceDependency_create();
+		celix_dmServiceDependency_setService(dep, PHASE2_NAME, NULL, NULL);
+		celix_dmServiceDependency_setStrategy(dep, DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND); //SUSPEND Strategy is default
+		celix_dm_service_dependency_callback_options_t opts = CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS;
+		opts.add = (void*)phase3_addPhase2;
+		opts.remove = (void*)phase3_removePhase2;
+		celix_dmServiceDependency_setCallbacksWithOptions(dep, &opts);
+		celix_dmServiceDependency_setRequired(dep, true);
+		celix_dmComponent_addServiceDependency(cmp, dep);
 
-		dependencyManager_add(manager, cmp);
+		celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+		celix_dependencyManager_add(mng, cmp);
 	} else {
 		status = CELIX_ENOMEM;
 	}
+	return status;
 
-    return status;
 }
 
-celix_status_t dm_destroy(void * userData, bundle_context_pt context, dm_dependency_manager_pt manager) {
-	printf("phase3: dm-destroy\n");
-
-	struct phase3_activator_struct *act = (struct phase3_activator_struct *)userData;
+static celix_status_t stop(struct phase3_activator_struct *act, celix_bundle_context_t *ctx) {
+	celix_status_t status = CELIX_SUCCESS;
+	printf("phase3: stop\n");
+	celix_dependency_manager_t *mng = celix_bundleContext_getDependencyManager(ctx);
+	celix_dependencyManager_removeAllComponents(mng);
 	if (act->phase3Cmp != NULL) {
 		phase3_destroy(act->phase3Cmp);
 	}
-	free(act);
-
-	return CELIX_SUCCESS;
+	return status;
 }
+
+
+CELIX_GEN_BUNDLE_ACTIVATOR(struct phase3_activator_struct, start, stop);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example/phase3/src/phase3_cmp.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example/phase3/src/phase3_cmp.c b/examples/celix-examples/dm_example/phase3/src/phase3_cmp.c
index 47cb720..e4e6902 100644
--- a/examples/celix-examples/dm_example/phase3/src/phase3_cmp.c
+++ b/examples/celix-examples/dm_example/phase3/src/phase3_cmp.c
@@ -38,7 +38,7 @@ struct phase3_cmp_struct {
 	celix_thread_t thread;
     bool running;
 	double currentValue;
-    array_list_pt phase2Services; //phase2_t *
+    celix_array_list_t *phase2Services; //phase2_t *
 };
 
 static void *phase3_thread(void *data);

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.cc
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.cc b/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.cc
index 61443dd..c4895e4 100644
--- a/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.cc
+++ b/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.cc
@@ -41,7 +41,7 @@ struct InvalidCServ {
 };
 
 void Phase1Activator::init() {
-    auto cmp = std::unique_ptr<Phase1Cmp>(new Phase1Cmp());
+    auto cmp = std::shared_ptr<Phase1Cmp>(new Phase1Cmp());
 
     Properties cmdProps;
     cmdProps[OSGI_SHELL_COMMAND_NAME] = "phase1_info";
@@ -87,7 +87,7 @@ void Phase1Activator::init() {
     tst->handle = cmp.get();
 
 
-    phase1cmp = &mng.createComponent(std::move(cmp))  //using a pointer a instance. Also supported is lazy initialization (default constructor needed) or a rvalue reference (move)
+    phase1cmp = &mng.createComponent(cmp)  //using a pointer a instance. Also supported is lazy initialization (default constructor needed) or a rvalue reference (move)
         .addInterface<IPhase1>(IPHASE1_VERSION)
         //.addInterface<IPhase2>() -> Compile error (static assert), because Phase1Cmp does not implement IPhase2
         .addCInterface(&cmd, OSGI_SHELL_COMMAND_SERVICE_NAME, "", cmdProps)
@@ -96,8 +96,4 @@ void Phase1Activator::init() {
         //.addCInterface(tst.get(), "TEST_SRV") -> Compile error (static assert), because InvalidCServ is not a pod
         .addInterface<srv::info::IName>(INAME_VERSION)
         .setCallbacks(&Phase1Cmp::init, &Phase1Cmp::start, &Phase1Cmp::stop, &Phase1Cmp::deinit);
-}
-
-void Phase1Activator::deinit() {
-    phase1cmp->removeCallbacks();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.h
----------------------------------------------------------------------
diff --git a/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.h b/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.h
index a3b062b..76ba839 100644
--- a/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.h
+++ b/examples/celix-examples/dm_example_cxx/phase1/src/Phase1Activator.h
@@ -39,7 +39,6 @@ class Phase1Activator : public DmActivator {
     Phase1Activator(const Phase1Activator&) = delete;
     Phase1Activator& operator=(const Phase1Activator&) = delete;
     virtual void init();
-    virtual void deinit();
 };
 
 #endif //CELIX_PHASE1ACTIVATOR_H

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/embedding/private/src/main.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/embedding/private/src/main.c b/examples/celix-examples/embedding/private/src/main.c
index b77cb22..d1ef0d6 100644
--- a/examples/celix-examples/embedding/private/src/main.c
+++ b/examples/celix-examples/embedding/private/src/main.c
@@ -43,18 +43,18 @@ celix_status_t embedded_foo();
 
 int main(void) {
 
-	framework_pt framework = NULL;
+	celix_framework_t *framework = NULL;
 
-	properties_pt config = properties_create();
+	celix_properties_t *config = properties_create();
 	int rc = celixLauncher_launchWithProperties(config, &framework);
 
 	if (rc == 0) {
-		bundle_pt fwBundle = NULL;
+		celix_bundle_t *fwBundle = NULL;
 		if(framework_getFrameworkBundle(framework, &fwBundle) == CELIX_SUCCESS){
 
 			if(bundle_start(fwBundle) == CELIX_SUCCESS){
 
-				bundle_context_pt context = NULL;
+				celix_bundle_context_t *context = NULL;
 				bundle_getContext(fwBundle, &context);
 
 				struct foo *f = calloc(1, sizeof(*f));

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/hello_world/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/hello_world/private/src/activator.c b/examples/celix-examples/hello_world/private/src/activator.c
index 37cf782..f19118b 100644
--- a/examples/celix-examples/hello_world/private/src/activator.c
+++ b/examples/celix-examples/hello_world/private/src/activator.c
@@ -35,7 +35,7 @@ struct userData {
 	char * word;
 };
 
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
+celix_status_t bundleActivator_create(celix_bundle_context_t *context, void **userData) {
 	celix_status_t status = CELIX_SUCCESS;
     *userData = malloc(sizeof(struct userData));
     if (*userData != NULL) {
@@ -46,7 +46,7 @@ celix_status_t bundleActivator_create(bundle_context_pt context, void **userData
 	return status;
 }
 
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) {
+celix_status_t bundleActivator_start(void * userData, celix_bundle_context_t *context) {
 	struct userData * data = (struct userData *) userData;
 	printf("Hello %s\n", data->word);
 
@@ -56,13 +56,13 @@ celix_status_t bundleActivator_start(void * userData, bundle_context_pt context)
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
+celix_status_t bundleActivator_stop(void * userData, celix_bundle_context_t *context) {
 	struct userData * data = (struct userData *) userData;
 	printf("Goodbye %s\n", data->word);
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
+celix_status_t bundleActivator_destroy(void * userData, celix_bundle_context_t *context) {
     free(userData);
 	return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/hello_world_test/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/hello_world_test/private/src/activator.c b/examples/celix-examples/hello_world_test/private/src/activator.c
index 2185e16..8ec3546 100644
--- a/examples/celix-examples/hello_world_test/private/src/activator.c
+++ b/examples/celix-examples/hello_world_test/private/src/activator.c
@@ -33,7 +33,7 @@ struct userData {
 	char * word;
 };
 
-celix_status_t bundleActivator_create(bundle_context_pt __attribute__((unused)) context, void **userData) {
+celix_status_t bundleActivator_create(celix_bundle_context_t __attribute__((unused)) *context, void **userData) {
 	celix_status_t status = CELIX_SUCCESS;
     *userData = malloc(sizeof(struct userData));
     if (*userData != NULL) {
@@ -44,20 +44,20 @@ celix_status_t bundleActivator_create(bundle_context_pt __attribute__((unused))
 	return status;
 }
 
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt __attribute__((unused)) context) {
+celix_status_t bundleActivator_start(void * userData, celix_bundle_context_t __attribute__((unused)) *context) {
 	struct userData * data = (struct userData *) userData;
 	printf("Hello %s\n", data->word);
 
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt __attribute__((unused)) context) {
+celix_status_t bundleActivator_stop(void * userData, celix_bundle_context_t __attribute__((unused)) *context) {
 	struct userData * data = (struct userData *) userData;
 	printf("Goodbye %s\n", data->word);
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt __attribute__((unused)) context) {
+celix_status_t bundleActivator_destroy(void * userData, celix_bundle_context_t __attribute__((unused)) *context) {
     free(userData);
 	return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/log_service_example/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/log_service_example/src/activator.c b/examples/celix-examples/log_service_example/src/activator.c
index 75eaf59..ac7e707 100644
--- a/examples/celix-examples/log_service_example/src/activator.c
+++ b/examples/celix-examples/log_service_example/src/activator.c
@@ -37,7 +37,7 @@ struct userData {
 
 static void *loggerThread(void *userData);
 
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
+celix_status_t bundleActivator_create(celix_bundle_context_t *context, void **userData) {
 	celix_status_t status = CELIX_SUCCESS;
     *userData = calloc(1, sizeof(struct userData));
     if (*userData != NULL) {
@@ -50,7 +50,7 @@ celix_status_t bundleActivator_create(bundle_context_pt context, void **userData
 }
 
 
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) {
+celix_status_t bundleActivator_start(void * userData, celix_bundle_context_t *context) {
 	struct userData * data = (struct userData *) userData;
 	printf("Started log example\n");
     logHelper_start(data->log_helper);
@@ -59,7 +59,7 @@ celix_status_t bundleActivator_start(void * userData, bundle_context_pt context)
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
+celix_status_t bundleActivator_stop(void * userData, celix_bundle_context_t *context) {
 	struct userData * data = (struct userData *) userData;
 	printf("Stopping logger example\n");
 	data->running = false;
@@ -68,7 +68,7 @@ celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context)
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
+celix_status_t bundleActivator_destroy(void * userData, celix_bundle_context_t *context) {
     struct userData * data = (struct userData *) userData;
     logHelper_destroy(&data->log_helper);
     free(userData);

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/service_hook_example/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/service_hook_example/src/activator.c b/examples/celix-examples/service_hook_example/src/activator.c
index f2d2a15..8fe56f2 100644
--- a/examples/celix-examples/service_hook_example/src/activator.c
+++ b/examples/celix-examples/service_hook_example/src/activator.c
@@ -42,7 +42,7 @@ struct userData {
 };
 
 
-celix_status_t tracker_added(void*hook, array_list_pt listeners) {
+celix_status_t tracker_added(void*hook, celix_array_list_t *listeners) {
     for(unsigned int i = 0; i < arrayList_size(listeners); i++) {
         listener_hook_info_pt info = arrayList_get(listeners, i);
         printf("Added tracker for service %s\n", info->filter);
@@ -51,7 +51,7 @@ celix_status_t tracker_added(void*hook, array_list_pt listeners) {
     return CELIX_SUCCESS;
 }
 
-celix_status_t tracker_removed(void*hook, array_list_pt listeners) {
+celix_status_t tracker_removed(void*hook, celix_array_list_t *listeners) {
     for(unsigned int i = 0; i < arrayList_size(listeners); i++) {
         listener_hook_info_pt info = arrayList_get(listeners, i);
         printf("Removed tracker for service %s\n", info->filter);
@@ -60,7 +60,7 @@ celix_status_t tracker_removed(void*hook, array_list_pt listeners) {
     return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
+celix_status_t bundleActivator_create(celix_bundle_context_t *context, void **userData) {
 	celix_status_t status = CELIX_SUCCESS;
     *userData = malloc(sizeof(struct userData));
     if (*userData != NULL) {
@@ -71,7 +71,7 @@ celix_status_t bundleActivator_create(bundle_context_pt context, void **userData
 	return status;
 }
 
-celix_status_t bundleActivator_start(void * handle, bundle_context_pt context) {
+celix_status_t bundleActivator_start(void * handle, celix_bundle_context_t *context) {
 	printf("Starting hook example bundle\n");
     struct userData *userData = (struct userData*)handle;   
     
@@ -116,7 +116,7 @@ celix_status_t bundleActivator_start(void * handle, bundle_context_pt context) {
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_stop(void * handle, bundle_context_pt context) {
+celix_status_t bundleActivator_stop(void * handle, celix_bundle_context_t *context) {
 	printf("Stopping hook example bundle\n");
     struct userData *userData = (struct userData*)handle;   
 
@@ -131,7 +131,7 @@ celix_status_t bundleActivator_stop(void * handle, bundle_context_pt context) {
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundleActivator_destroy(void * handle, bundle_context_pt context) {
+celix_status_t bundleActivator_destroy(void * handle, celix_bundle_context_t *context) {
     free(handle);
 	return CELIX_SUCCESS;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/examples/celix-examples/services_example_c/src/dynamic_provider_example.c
----------------------------------------------------------------------
diff --git a/examples/celix-examples/services_example_c/src/dynamic_provider_example.c b/examples/celix-examples/services_example_c/src/dynamic_provider_example.c
index 1b09ab9..1c3a289 100644
--- a/examples/celix-examples/services_example_c/src/dynamic_provider_example.c
+++ b/examples/celix-examples/services_example_c/src/dynamic_provider_example.c
@@ -63,7 +63,7 @@ void * run(void *handle) {
     bool up = true;
     while (isRunning(data)) {
         if (up) {
-            properties_t *props = properties_create();
+            celix_properties_t *props = properties_create();
             celix_properties_setLong(props, OSGI_FRAMEWORK_SERVICE_RANKING, rand());
             data->svcIds[i++] = celix_bundleContext_registerService(data->ctx, &data->svc, EXAMPLE_CALC_NAME, props);
         } else { //down

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/libs/dependency_manager_cxx/src/dm_activator.cc
----------------------------------------------------------------------
diff --git a/libs/dependency_manager_cxx/src/dm_activator.cc b/libs/dependency_manager_cxx/src/dm_activator.cc
index b7669e3..6ac02c5 100644
--- a/libs/dependency_manager_cxx/src/dm_activator.cc
+++ b/libs/dependency_manager_cxx/src/dm_activator.cc
@@ -30,7 +30,7 @@ struct BundleActivatorData {
     std::unique_ptr<celix::dm::DmActivator> act;
 };
 
-extern "C" celix_status_t bundleActivator_create(bundle_context_pt context, void** userData) {
+extern "C" celix_status_t bundleActivator_create(celix_bundle_context_t *context, void** userData) {
     int status = CELIX_SUCCESS;
 
     BundleActivatorData* data = nullptr;
@@ -52,9 +52,8 @@ extern "C" celix_status_t bundleActivator_create(bundle_context_pt context, void
     if (data == nullptr || data->act == nullptr) {
         status = CELIX_ENOMEM;
         if (data != nullptr) {
-            data->act = nullptr;
+            delete data;
         }
-        delete data;
         *userData = nullptr;
     } else {
         *userData = data;
@@ -62,7 +61,7 @@ extern "C" celix_status_t bundleActivator_create(bundle_context_pt context, void
     return status;
 }
 
-extern "C" celix_status_t bundleActivator_start(void* userData, [[gnu::unused]] bundle_context_pt context) {
+extern "C" celix_status_t bundleActivator_start(void* userData, celix_bundle_context_t *) {
     int status = CELIX_SUCCESS;
     auto* data = static_cast<BundleActivatorData*>(userData);
     if (data != nullptr) {
@@ -71,21 +70,20 @@ extern "C" celix_status_t bundleActivator_start(void* userData, [[gnu::unused]]
     return status;
 }
 
-extern "C" celix_status_t bundleActivator_stop(void* userData, [[gnu::unused]] bundle_context_pt context) {
+extern "C" celix_status_t bundleActivator_stop(void* userData, celix_bundle_context_t *) {
     int status = CELIX_SUCCESS;
     auto* data = static_cast<BundleActivatorData*>(userData);
     if (data != nullptr) {
         status = data->act->stop();
+        data->act = nullptr;
     }
     return status;
 }
 
-extern "C" celix_status_t bundleActivator_destroy([[gnu::unused]] void* userData,[[gnu::unused]]     bundle_context_pt context ) {
-    int status = CELIX_SUCCESS;
+extern "C" celix_status_t bundleActivator_destroy(void *userData, celix_bundle_context_t* ) {
     auto* data = static_cast<BundleActivatorData*>(userData);
     if (data != nullptr) {
-        data->act = nullptr;
+        delete data;
     }
-    delete data;
-    return status;
+    return CELIX_SUCCESS;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/libs/framework/include/bundle.h
----------------------------------------------------------------------
diff --git a/libs/framework/include/bundle.h b/libs/framework/include/bundle.h
index 676c8b4..7ea0d1e 100644
--- a/libs/framework/include/bundle.h
+++ b/libs/framework/include/bundle.h
@@ -40,85 +40,85 @@ extern "C" {
 struct celix_bundle_activator;
 typedef struct celix_bundle_activator celix_bundle_activator_t;
 
-FRAMEWORK_EXPORT celix_status_t bundle_create(bundle_pt *bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_create(celix_bundle_t **bundle);
 
 FRAMEWORK_EXPORT celix_status_t
-bundle_createFromArchive(bundle_pt *bundle, framework_pt framework, bundle_archive_pt archive);
+bundle_createFromArchive(celix_bundle_t **bundle, celix_framework_t *framework, bundle_archive_pt archive);
 
-FRAMEWORK_EXPORT celix_status_t bundle_destroy(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_destroy(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_isSystemBundle(bundle_pt bundle, bool *systemBundle);
+FRAMEWORK_EXPORT celix_status_t bundle_isSystemBundle(celix_bundle_t *bundle, bool *systemBundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getArchive(bundle_pt bundle, bundle_archive_pt *archive);
+FRAMEWORK_EXPORT celix_status_t bundle_getArchive(celix_bundle_t *bundle, bundle_archive_pt *archive);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getCurrentModule(bundle_pt bundle, module_pt *module);
+FRAMEWORK_EXPORT celix_status_t bundle_getCurrentModule(celix_bundle_t *bundle, module_pt *module);
 
-FRAMEWORK_EXPORT array_list_pt bundle_getModules(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_array_list_t *bundle_getModules(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT void *bundle_getHandle(bundle_pt bundle);
+FRAMEWORK_EXPORT void *bundle_getHandle(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT void bundle_setHandle(bundle_pt bundle, void *handle);
+FRAMEWORK_EXPORT void bundle_setHandle(celix_bundle_t *bundle, void *handle);
 
-FRAMEWORK_EXPORT celix_bundle_activator_t *bundle_getActivator(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_bundle_activator_t *bundle_getActivator(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_setActivator(bundle_pt bundle, celix_bundle_activator_t *activator);
+FRAMEWORK_EXPORT celix_status_t bundle_setActivator(celix_bundle_t *bundle, celix_bundle_activator_t *activator);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getContext(bundle_pt bundle, bundle_context_pt *context);
+FRAMEWORK_EXPORT celix_status_t bundle_getContext(celix_bundle_t *bundle, celix_bundle_context_t **context);
 
-FRAMEWORK_EXPORT celix_status_t bundle_setContext(bundle_pt bundle, bundle_context_pt context);
+FRAMEWORK_EXPORT celix_status_t bundle_setContext(celix_bundle_t *bundle, celix_bundle_context_t *context);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getEntry(bundle_pt bundle, const char *name, char **entry);
+FRAMEWORK_EXPORT celix_status_t bundle_getEntry(celix_bundle_t *bundle, const char *name, char **entry);
 
-FRAMEWORK_EXPORT celix_status_t bundle_start(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_start(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_startWithOptions(bundle_pt bundle, int options);
+FRAMEWORK_EXPORT celix_status_t bundle_startWithOptions(celix_bundle_t *bundle, int options);
 
-FRAMEWORK_EXPORT celix_status_t bundle_update(bundle_pt bundle, const char *inputFile);
+FRAMEWORK_EXPORT celix_status_t bundle_update(celix_bundle_t *bundle, const char *inputFile);
 
-FRAMEWORK_EXPORT celix_status_t bundle_stop(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_stop(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_stopWithOptions(bundle_pt bundle, int options);
+FRAMEWORK_EXPORT celix_status_t bundle_stopWithOptions(celix_bundle_t *bundle, int options);
 
-FRAMEWORK_EXPORT celix_status_t bundle_uninstall(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_uninstall(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_setState(bundle_pt bundle, bundle_state_e state);
+FRAMEWORK_EXPORT celix_status_t bundle_setState(celix_bundle_t *bundle, bundle_state_e state);
 
-FRAMEWORK_EXPORT celix_status_t bundle_setPersistentStateInactive(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_setPersistentStateInactive(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_setPersistentStateUninstalled(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_setPersistentStateUninstalled(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT void uninstallBundle(bundle_pt bundle);
+FRAMEWORK_EXPORT void uninstallBundle(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_revise(bundle_pt bundle, const char *location, const char *inputFile);
+FRAMEWORK_EXPORT celix_status_t bundle_revise(celix_bundle_t *bundle, const char *location, const char *inputFile);
 
-FRAMEWORK_EXPORT celix_status_t bundle_addModule(bundle_pt bundle, module_pt module);
+FRAMEWORK_EXPORT celix_status_t bundle_addModule(celix_bundle_t *bundle, module_pt module);
 
-FRAMEWORK_EXPORT celix_status_t bundle_closeModules(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_closeModules(celix_bundle_t *bundle);
 
 // Service Reference Functions
-FRAMEWORK_EXPORT array_list_pt getUsingBundles(service_reference_pt reference);
+FRAMEWORK_EXPORT celix_array_list_t *getUsingBundles(service_reference_pt reference);
 
 FRAMEWORK_EXPORT int compareTo(service_reference_pt a, service_reference_pt b);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getState(bundle_pt bundle, bundle_state_e *state);
+FRAMEWORK_EXPORT celix_status_t bundle_getState(celix_bundle_t *bundle, bundle_state_e *state);
 
-FRAMEWORK_EXPORT celix_status_t bundle_closeAndDelete(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_closeAndDelete(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_close(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_close(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_refresh(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_refresh(celix_bundle_t *bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getBundleId(bundle_pt bundle, long *id);
+FRAMEWORK_EXPORT celix_status_t bundle_getBundleId(celix_bundle_t *bundle, long *id);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getRegisteredServices(bundle_pt bundle, array_list_pt *list);
+FRAMEWORK_EXPORT celix_status_t bundle_getRegisteredServices(celix_bundle_t *bundle, celix_array_list_t **list);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getServicesInUse(bundle_pt bundle, array_list_pt *list);
+FRAMEWORK_EXPORT celix_status_t bundle_getServicesInUse(celix_bundle_t *bundle, celix_array_list_t **list);
 
-FRAMEWORK_EXPORT celix_status_t bundle_setFramework(bundle_pt bundle, framework_pt framework);
+FRAMEWORK_EXPORT celix_status_t bundle_setFramework(celix_bundle_t *bundle, celix_framework_t *framework);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getFramework(bundle_pt bundle, framework_pt *framework);
+FRAMEWORK_EXPORT celix_status_t bundle_getFramework(celix_bundle_t *bundle, celix_framework_t **framework);
 
-FRAMEWORK_EXPORT celix_status_t bundle_getBundleLocation(bundle_pt bundle, const char **location);
+FRAMEWORK_EXPORT celix_status_t bundle_getBundleLocation(celix_bundle_t *bundle, const char **location);
 
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/libs/framework/include/bundle_activator.h
----------------------------------------------------------------------
diff --git a/libs/framework/include/bundle_activator.h b/libs/framework/include/bundle_activator.h
index 99ef6bc..ce0e33c 100644
--- a/libs/framework/include/bundle_activator.h
+++ b/libs/framework/include/bundle_activator.h
@@ -36,7 +36,7 @@ extern "C" {
  * The activator instance is handle as a void pointer by the framework, the implementation must cast it to the
  * implementation specific type.
  *
- * @param context The execution context of the bundle being started.
+ * @param ctx The execution context of the bundle being started.
  * @param[out] userData A pointer to the specific activator instance used by this bundle.
  *
  * @return Status code indication failure or success:
@@ -44,7 +44,7 @@ extern "C" {
  * 		- Any other status code will mark the bundle as stopped and the framework will remove this
  * 		  bundle's listeners, unregister all services, and release all services used by this bundle.
  */
-ACTIVATOR_EXPORT celix_status_t bundleActivator_create(bundle_context_t *context_ptr, void **userData);
+ACTIVATOR_EXPORT celix_status_t bundleActivator_create(celix_bundle_context_t *ctx, void **userData);
 
 /**
  * Called when this bundle is started so the Framework can perform the bundle-specific activities necessary
@@ -55,14 +55,14 @@ ACTIVATOR_EXPORT celix_status_t bundleActivator_create(bundle_context_t *context
  * This method must complete and return to its caller in a timely manner.
  *
  * @param userData The activator instance to be used.
- * @param context The execution context of the bundle being started.
+ * @param ctx The execution context of the bundle being started.
  *
  * @return Status code indication failure or success:
  * 		- CELIX_SUCCESS when no errors are encountered.
  * 		- Any other status code will mark the bundle as stopped and the framework will remove this
  * 		  bundle's listeners, unregister all services, and release all services used by this bundle.
  */
-ACTIVATOR_EXPORT celix_status_t bundleActivator_start(void *userData, bundle_context_t *context);
+ACTIVATOR_EXPORT celix_status_t bundleActivator_start(void *userData, celix_bundle_context_t *ctx);
 
 /**
  * Called when this bundle is stopped so the Framework can perform the bundle-specific activities necessary
@@ -74,14 +74,14 @@ ACTIVATOR_EXPORT celix_status_t bundleActivator_start(void *userData, bundle_con
  * This method must complete and return to its caller in a timely manner.
  *
  * @param userData The activator instance to be used.
- * @param context The execution context of the bundle being stopped.
+ * @param ctx The execution context of the bundle being stopped.
  *
  * @return Status code indication failure or success:
  * 		- CELIX_SUCCESS when no errors are encountered.
  * 		- Any other status code will mark the bundle as stopped and the framework will remove this
  * 		  bundle's listeners, unregister all services, and release all services used by this bundle.
  */
-ACTIVATOR_EXPORT celix_status_t bundleActivator_stop(void *userData, bundle_context_t *context);
+ACTIVATOR_EXPORT celix_status_t bundleActivator_stop(void *userData, celix_bundle_context_t *ctx);
 
 /**
  * Called when this bundle is stopped so the bundle can destroy the instance of its activator. In general, this
@@ -91,7 +91,7 @@ ACTIVATOR_EXPORT celix_status_t bundleActivator_stop(void *userData, bundle_cont
  * This method must complete and return to its caller in a timely manner.
  *
  * @param userData The activator instance to be used.
- * @param context The execution context of the bundle being stopped.
+ * @param ctx The execution context of the bundle being stopped.
  *
  * @return Status code indication failure or success:
  * 		- CELIX_SUCCESS when no errors are encountered.
@@ -99,7 +99,7 @@ ACTIVATOR_EXPORT celix_status_t bundleActivator_stop(void *userData, bundle_cont
  * 		  bundle's listeners, unregister all services, and release all services used by this bundle.
  */
 ACTIVATOR_EXPORT celix_status_t
-bundleActivator_destroy(void *userData, bundle_context_t* context);
+bundleActivator_destroy(void *userData, celix_bundle_context_t* ctx);
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/libs/framework/include/bundle_context.h
----------------------------------------------------------------------
diff --git a/libs/framework/include/bundle_context.h b/libs/framework/include/bundle_context.h
index 97a264b..8c2e3aa 100644
--- a/libs/framework/include/bundle_context.h
+++ b/libs/framework/include/bundle_context.h
@@ -44,27 +44,27 @@ extern "C" {
 #endif
 
 celix_status_t
-bundleContext_create(framework_pt framework, framework_logger_pt, bundle_pt bundle, bundle_context_pt *bundle_context);
+bundleContext_create(celix_framework_t *framework, framework_logger_pt, celix_bundle_t *bundle, celix_bundle_context_t **bundle_context);
 
-celix_status_t bundleContext_destroy(bundle_context_pt context);
+celix_status_t bundleContext_destroy(celix_bundle_context_t *context);
 
-FRAMEWORK_EXPORT celix_status_t bundleContext_getBundle(bundle_context_pt context, bundle_pt *bundle);
+FRAMEWORK_EXPORT celix_status_t bundleContext_getBundle(celix_bundle_context_t *context, celix_bundle_t **bundle);
 
-FRAMEWORK_EXPORT celix_status_t bundleContext_getFramework(bundle_context_pt context, framework_pt *framework);
+FRAMEWORK_EXPORT celix_status_t bundleContext_getFramework(celix_bundle_context_t *context, celix_framework_t **framework);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_installBundle(bundle_context_pt context, const char *location, bundle_pt *bundle);
+bundleContext_installBundle(celix_bundle_context_t *context, const char *location, celix_bundle_t **bundle);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_installBundle2(bundle_context_pt context, const char *location, const char *inputFile, bundle_pt *bundle);
+bundleContext_installBundle2(celix_bundle_context_t *context, const char *location, const char *inputFile, celix_bundle_t **bundle);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_registerService(bundle_context_pt context, const char *serviceName, const void *svcObj,
-                              properties_pt properties, service_registration_pt *service_registration);
+bundleContext_registerService(celix_bundle_context_t *context, const char *serviceName, const void *svcObj,
+                              celix_properties_t *properties, service_registration_pt *service_registration);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_registerServiceFactory(bundle_context_pt context, const char *serviceName, service_factory_pt factory,
-                                     properties_pt properties, service_registration_pt *service_registration);
+bundleContext_registerServiceFactory(celix_bundle_context_t *context, const char *serviceName, service_factory_pt factory,
+                                     celix_properties_t *properties, service_registration_pt *service_registration);
 
 /**
  * Get a service reference for the bundle context. When the service reference is no longer needed use bundleContext_ungetServiceReference.
@@ -75,7 +75,7 @@ bundleContext_registerServiceFactory(bundle_context_pt context, const char *serv
  * @param service_reference _output_ The found service reference, or NULL when no service is found.
  * @return CELIX_SUCCESS on success
  */
-FRAMEWORK_EXPORT celix_status_t bundleContext_getServiceReference(bundle_context_pt context, const char *serviceName,
+FRAMEWORK_EXPORT celix_status_t bundleContext_getServiceReference(celix_bundle_context_t *context, const char *serviceName,
                                                                   service_reference_pt *service_reference);
 
 /** Same as bundleContext_getServiceReference, but than for a optional serviceName combined with a optional filter.
@@ -88,8 +88,8 @@ FRAMEWORK_EXPORT celix_status_t bundleContext_getServiceReference(bundle_context
  * @return CELIX_SUCCESS on success
  */
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_getServiceReferences(bundle_context_pt context, const char *serviceName, const char *filter,
-                                   array_list_pt *service_references);
+bundleContext_getServiceReferences(celix_bundle_context_t *context, const char *serviceName, const char *filter,
+                                   celix_array_list_t **service_references);
 
 /**
  * Retains (increases the ref count) the provided service reference. Can be used to retain a service reference.
@@ -100,7 +100,7 @@ bundleContext_getServiceReferences(bundle_context_pt context, const char *servic
  * @return CELIX_SUCCES on success
  */
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_retainServiceReference(bundle_context_pt context, service_reference_pt reference);
+bundleContext_retainServiceReference(celix_bundle_context_t *context, service_reference_pt reference);
 
 /**
  * Ungets the service references. If the ref counter of the service refernce goes to 0, the reference will be destroyed.
@@ -112,34 +112,34 @@ bundleContext_retainServiceReference(bundle_context_pt context, service_referenc
  * @return CELIX_SUCCESS on success.
  */
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_ungetServiceReference(bundle_context_pt context, service_reference_pt reference);
+bundleContext_ungetServiceReference(celix_bundle_context_t *context, service_reference_pt reference);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_getService(bundle_context_pt context, service_reference_pt reference, void **service_instance);
+bundleContext_getService(celix_bundle_context_t *context, service_reference_pt reference, void **service_instance);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_ungetService(bundle_context_pt context, service_reference_pt reference, bool *result);
+bundleContext_ungetService(celix_bundle_context_t *context, service_reference_pt reference, bool *result);
 
-FRAMEWORK_EXPORT celix_status_t bundleContext_getBundles(bundle_context_pt context, array_list_pt *bundles);
+FRAMEWORK_EXPORT celix_status_t bundleContext_getBundles(celix_bundle_context_t *context, celix_array_list_t **bundles);
 
-FRAMEWORK_EXPORT celix_status_t bundleContext_getBundleById(bundle_context_pt context, long id, bundle_pt *bundle);
+FRAMEWORK_EXPORT celix_status_t bundleContext_getBundleById(celix_bundle_context_t *context, long id, celix_bundle_t **bundle);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_addServiceListener(bundle_context_pt context, celix_service_listener_t *listener, const char *filter);
+bundleContext_addServiceListener(celix_bundle_context_t *context, celix_service_listener_t *listener, const char *filter);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_removeServiceListener(bundle_context_pt context, celix_service_listener_t *listener);
+bundleContext_removeServiceListener(celix_bundle_context_t *context, celix_service_listener_t *listener);
 
-FRAMEWORK_EXPORT celix_status_t bundleContext_addBundleListener(bundle_context_pt context, bundle_listener_pt listener);
+FRAMEWORK_EXPORT celix_status_t bundleContext_addBundleListener(celix_bundle_context_t *context, bundle_listener_pt listener);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_removeBundleListener(bundle_context_pt context, bundle_listener_pt listener);
+bundleContext_removeBundleListener(celix_bundle_context_t *context, bundle_listener_pt listener);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_addFrameworkListener(bundle_context_pt context, framework_listener_pt listener);
+bundleContext_addFrameworkListener(celix_bundle_context_t *context, framework_listener_pt listener);
 
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_removeFrameworkListener(bundle_context_pt context, framework_listener_pt listener);
+bundleContext_removeFrameworkListener(celix_bundle_context_t *context, framework_listener_pt listener);
 
 /**
  * Gets the config property - or environment variable if the config property does not exist - for the provided name.
@@ -150,7 +150,7 @@ bundleContext_removeFrameworkListener(bundle_context_pt context, framework_liste
  * @return 0 if successful.
  */
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_getProperty(bundle_context_pt context, const char *name, const char **value);
+bundleContext_getProperty(celix_bundle_context_t *context, const char *name, const char **value);
 
 /**
  * Gets the config property - or environment variable if the config property does not exist - for the provided name.
@@ -162,7 +162,7 @@ bundleContext_getProperty(bundle_context_pt context, const char *name, const cha
  * @return 0 if successful.
  */
 FRAMEWORK_EXPORT celix_status_t
-bundleContext_getPropertyWithDefault(bundle_context_pt context, const char *name, const char *defaultValue, const char **value);
+bundleContext_getPropertyWithDefault(celix_bundle_context_t *context, const char *name, const char *defaultValue, const char **value);
 
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/libs/framework/include/bundle_revision.h
----------------------------------------------------------------------
diff --git a/libs/framework/include/bundle_revision.h b/libs/framework/include/bundle_revision.h
index 7c67a94..b18eb45 100644
--- a/libs/framework/include/bundle_revision.h
+++ b/libs/framework/include/bundle_revision.h
@@ -123,13 +123,13 @@ celix_status_t bundleRevision_getManifest(bundle_revision_pt revision, manifest_
  * Retrieves the handles of the installed libraries for this revision.
  *
  * @param revision The revision to get the manifest for.
- * @param[out] handles array_list_pt containing the handles.
+ * @param[out] handles celix_array_list_t *containing the handles.
  *
  * @return Status code indication failure or success:
  *      - CELIX_SUCCESS when no errors are encountered.
  *      - CELIX_ILLEGAL_ARGUMENT If <code>revision</code> is illegal.
  */
-celix_status_t bundleRevision_getHandles(bundle_revision_pt revision, array_list_pt *handles);
+celix_status_t bundleRevision_getHandles(bundle_revision_pt revision, celix_array_list_t **handles);
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/2492416e/libs/framework/include/celix/dm/Component.h
----------------------------------------------------------------------
diff --git a/libs/framework/include/celix/dm/Component.h b/libs/framework/include/celix/dm/Component.h
index 85723f9..d5df319 100644
--- a/libs/framework/include/celix/dm/Component.h
+++ b/libs/framework/include/celix/dm/Component.h
@@ -31,12 +31,12 @@ namespace celix { namespace dm {
 
     class BaseComponent {
     private:
-        bundle_context_pt context {nullptr};
-        dm_component_pt cCmp {nullptr};
+        celix_bundle_context_t *context {nullptr};
+        celix_dm_component_t *cCmp {nullptr};
     public:
-        BaseComponent(const bundle_context_pt con, std::string name) : context{con}, cCmp{nullptr} {
-            component_create(this->context, name.c_str(), &this->cCmp);
-            component_setImplementation(this->cCmp, this);
+        BaseComponent(celix_bundle_context_t *con, std::string name) : context{con}, cCmp{nullptr} {
+            this->cCmp = celix_dmComponent_create(this->context, name.c_str());
+            celix_dmComponent_setImplementation(this->cCmp, this);
         }
         virtual ~BaseComponent() {}
 
@@ -46,12 +46,12 @@ namespace celix { namespace dm {
         /**
          * Returns the C DM Component
          */
-        dm_component_pt cComponent() const { return this->cCmp; }
+        celix_dm_component_t* cComponent() const { return this->cCmp; }
 
         /**
          * Returns the C bundle context
          */
-        bundle_context_pt bundleContext() const { return this->context; }
+        celix_bundle_context_t* bundleContext() const { return this->context; }
     };
         
 
@@ -74,7 +74,7 @@ namespace celix { namespace dm {
         int (T::*stopFpNoExc)() = {};
         int (T::*deinitFpNoExc)() = {};
     public:
-        Component(const bundle_context_pt context, std::string name);
+        Component(celix_bundle_context_t *context, std::string name);
         virtual ~Component();
 
         /**
@@ -83,14 +83,14 @@ namespace celix { namespace dm {
          * Will use new(nothrow) if exceptions are disabled.
          * @return newly created DM Component or nullptr
          */
-        static Component<T>* create(bundle_context_pt, std::string name);
+        static Component<T>* create(celix_bundle_context_t*, std::string name);
 
         /**
          * Creates a Component using the provided bundle context.
          * Will use new(nothrow) if exceptions are disabled.
          * @return newly created DM Component or nullptr
          */
-        static Component<T>* create(bundle_context_pt);
+        static Component<T>* create(celix_bundle_context_t*);
 
         /**
          * Wether the component is valid. Invalid component can occurs when no new components can be created and