diff --git a/build/win32/makefile b/build/win32/makefile
index 6941c32..eb4030a 100644
--- a/build/win32/makefile
+++ b/build/win32/makefile
@@ -22,7 +22,9 @@
 		 $(SAVANSRC)\src\handlers\*.c \
 		 $(SAVANSRC)\src\util\*.c \
 		 $(SAVANSRC)\src\subscribers\*.c \
-		 $(SAVANSRC)\src\msgreceivers\*.c 
+		 $(SAVANSRC)\src\msgreceivers\*.c \
+		 $(SAVANSRC)\src\storage\common\*.c \
+		 $(SAVANSRC)\src\storage\inmemory\*.c 
 		
 #compiler options
 CC = @cl.exe
@@ -119,7 +121,7 @@
 $(SAVANDISTDIR)\lib\$(SAVAN_CLIENT).dll :
 	if not exist $(SAVANINTDIR)\client mkdir $(SAVANINTDIR)\client
 	$(CC) $(CFLAGS) $(SAVAN_CLIENT_SRC) /Fo$(SAVANINTDIR)\client\ /c
-	$(LD) $(LDFLAGS) $(LIBS) $(SAVANINTDIR)\client\*.obj /DLL \
+	$(LD) $(LDFLAGS) $(LIBS) $(SAVANDLL).lib $(SAVANINTDIR)\client\*.obj /DLL \
 	/OUT:$(SAVANDISTDIR)\lib\$(SAVAN_CLIENT).dll /IMPLIB:$(SAVANDISTDIR)\lib\$(SAVAN_CLIENT).lib
 	-@$(_VC_MANIFEST_EMBED_DLL)
 
@@ -130,7 +132,7 @@
 
 $(SAVANDISTDIR)\services\subscription\subscription.dll :
 	$(CC) $(CFLAGS) $(SAVANSRC)\src\subs_mgr\*.c /Fo$(SAVANINTDIR)\samples\subscription\ /c
-	$(LD) $(LDFLAGS) $(LIBS) $(SAVANINTDIR)\samples\subscription\*.obj  $(SAVAN_CLIENT).lib /DLL \
+	$(LD) $(LDFLAGS) $(LIBS) $(SAVANDLL).lib $(SAVANINTDIR)\samples\subscription\*.obj  $(SAVAN_CLIENT).lib /DLL \
 	/OUT:$(SAVANDISTDIR)\services\subscription\subscription.dll
 	-@$(_VC_MANIFEST_EMBED_DLL)
 	@copy $(SAVANSRC)\src\subs_mgr\services.xml $(SAVANDISTDIR)\services\subscription\
@@ -163,7 +165,7 @@
 
 subscriber: $(SAVANDISTDIR)\bin\samples\savan\subscriber.exe
 	
-dist: clean distdir intdir savan savan_client publisher listener subscription subscriber copy_include copy_samples copy_extra
+dist: clean distdir intdir savan savan_client listener subscription subscriber copy_include copy_samples copy_extra
 
 
 	 
diff --git a/include/savan_storage_mgr.h b/include/savan_storage_mgr.h
index af35203..9584142 100644
--- a/include/savan_storage_mgr.h
+++ b/include/savan_storage_mgr.h
@@ -112,7 +112,7 @@
  * @param storage_mgr
  * @param env environment object
  */
-void AXIS2_CALL 
+AXIS2_EXTERN void AXIS2_CALL 
 savan_storage_mgr_free(
     savan_storage_mgr_t *storage_mgr,
     const axutil_env_t *envv);
diff --git a/src/handlers/savan_in_handler.c b/src/handlers/savan_in_handler.c
index 612b892..7c60d71 100644
--- a/src/handlers/savan_in_handler.c
+++ b/src/handlers/savan_in_handler.c
@@ -87,7 +87,7 @@
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the database. Check \
             whether database path is correct and accessible. Exit loading the Savan module");
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
 
         return AXIS2_FAILURE;
     }
diff --git a/src/handlers/savan_out_handler.c b/src/handlers/savan_out_handler.c
index d8b6946..a94b9bd 100644
--- a/src/handlers/savan_out_handler.c
+++ b/src/handlers/savan_out_handler.c
@@ -88,7 +88,7 @@
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the database. Check \
             whether database path is correct and accessible. Exit loading the Savan module");
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
 
         return AXIS2_FAILURE;
     }
diff --git a/src/msgreceivers/savan_msg_recv.c b/src/msgreceivers/savan_msg_recv.c
index 2815583..3f853f7 100644
--- a/src/msgreceivers/savan_msg_recv.c
+++ b/src/msgreceivers/savan_msg_recv.c
@@ -22,6 +22,7 @@
 #include <axiom_soap_fault.h>
 #include <axutil_property.h>
 #include <axis2_addr.h>
+#include <axutil_error.h>
 
 #include <savan_util.h>
 #include <savan_constants.h>
@@ -362,7 +363,7 @@
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the data resource. Check \
             whether resource path is correct and accessible. Exit loading the Savan module");
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
 
         return AXIS2_FAILURE;
     }
diff --git a/src/storage/inmemory/storage_mgr_inmemory.c b/src/storage/inmemory/storage_mgr_inmemory.c
new file mode 100644
index 0000000..dd84de6
--- /dev/null
+++ b/src/storage/inmemory/storage_mgr_inmemory.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include <savan_storage_mgr.h>
+
+AXIS2_EXTERN savan_storage_mgr_t * AXIS2_CALL
+savan_storage_mgr_create(
+    const axutil_env_t *env,
+    axis2_conf_t *conf)
+{
+	return NULL;
+}
+
diff --git a/src/subs_mgr/subs_mgr.c b/src/subs_mgr/subs_mgr.c
index c6d77f2..5d6a007 100644
--- a/src/subs_mgr/subs_mgr.c
+++ b/src/subs_mgr/subs_mgr.c
@@ -102,7 +102,7 @@
     storage_mgr = savan_util_get_storage_mgr(env, conf_ctx, conf);
     if(!storage_mgr)
     {
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
         return NULL;
     }
     if(savan_storage_mgr_insert_subscriber(storage_mgr, env, subscriber))
@@ -165,7 +165,7 @@
     storage_mgr = savan_util_get_storage_mgr(env, conf_ctx, conf);
     if(!storage_mgr)
     {
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
         return NULL;
     }
 
@@ -252,7 +252,7 @@
     storage_mgr = savan_util_get_storage_mgr(env, conf_ctx, conf);
     if(!storage_mgr)
     {
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_HANDLE_ERROR(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
         return NULL;
     }
     subscriber = savan_storage_mgr_retrieve_subscriber(storage_mgr, env, subs_id);
@@ -385,3 +385,12 @@
     return subs_list_node;
 }
 
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+savan_subs_mgr_get_topic_list(
+    const axutil_env_t *env,
+    axiom_node_t *node,
+    axis2_msg_ctx_t *msg_ctx)
+{
+	return NULL;
+}
+
diff --git a/src/subs_mgr/subs_mgr_skel.c b/src/subs_mgr/subs_mgr_skel.c
index dd5cd97..4e85335 100644
--- a/src/subs_mgr/subs_mgr_skel.c
+++ b/src/subs_mgr/subs_mgr_skel.c
@@ -132,7 +132,7 @@
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Could not create the database. Check \
             whether database path is correct and accessible. Exit loading the Savan module");
-        AXIS2_LOG_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
+        AXIS2_ERROR_HANDLE(env, SAVAN_ERROR_DATABASE_CREATION_ERROR, AXIS2_FAILURE);
 
         return AXIS2_FAILURE;
     }*/
