diff --git a/index.js b/index.js
index 4e145f4..59ec17c 100644
--- a/index.js
+++ b/index.js
@@ -21,6 +21,6 @@ var options = {
 
 var httpServer = HttpServer.start(config, options);
 
-partner.start(config, aaa.callbackReport, options);
+partner.start(options);
 aaa.start(config, partner, options);
 expresso.start(options);
diff --git a/partner-masterpulsa-voucher.js b/partner-masterpulsa-voucher.js
index 67312c4..28faf35 100644
--- a/partner-masterpulsa-voucher.js
+++ b/partner-masterpulsa-voucher.js
@@ -40,12 +40,25 @@ function createRedisClient() {
     redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host);
 }
 
-function start(_config, _callbackReport, options) {
-    config = _config;
-    callbackReport = _callbackReport
+function start(options) {
+    if (!options) {
+        console.log('Undefined options, terminating....');
+        process.exit(1);
+    }
+
+    if (options.config) {
+        config = options.config;
+    } else {
+        console.log('Undefined options.config, terminating....')
+        process.exit(1);
+    }
 
-    if (options && options.aaa) {
-            aaa = options.aaa;
+    if (options.aaa) {
+        aaa = options.aaa;
+        callbackReport = options.aaa.callbackReportWithPushToMongoDb;
+    } else {
+        console.log('Undefined options.aaa, terminating....')
+        process.exit(1);
     }
 
     if (options && options.logger) {
@@ -70,6 +83,8 @@ function dupcheckKey(gatewayName, task) {
 }
 
 function topupRequest(task, retry) {
+    aaa.insertTaskToMongoDb(task);
+
     var key = dupcheckKey(config.globals.gateway_name, task);
 
     redisClient.get(key, function(err, data) {