diff --git a/index.js b/index.js
index dd057e2..19060e7 100644
--- a/index.js
+++ b/index.js
@@ -7,7 +7,7 @@ HttpServer = require('sate24/httpserver.js');
 var httpServer = HttpServer.start(config);
 
 var aaa = require('sate24/aaa.js');
-var partner = require('./partner-datacell.js');
+var partner = require('./partner-trugee.js');
 
 partner.start(config, aaa.callbackReport);
 aaa.start(config, partner);
diff --git a/package.json b/package.json
index 73c1b6a..b7fd664 100644
--- a/package.json
+++ b/package.json
@@ -1,14 +1,14 @@
 {
-  "name": "sate24-to-datacell",
+  "name": "sate24-to-trugee",
   "version": "0.0.1",
-  "description": "ST24 to Datacell",
+  "description": "ST24 to Trugee",
   "main": "index.js",
   "scripts": {
     "test": "mocha"
   },
   "repository": {
     "type": "git",
-    "url": "git@gitlab.kodesumber.com:reload97/sate24-to-datacell.git"
+    "url": "git@gitlab.kodesumber.com:reload97/sate24-to-trugee.git"
   },
   "keywords": [
     "datacell",
diff --git a/partner-datacell.js b/partner-datacell.js
deleted file mode 100644
index 9c389f0..0000000
--- a/partner-datacell.js
+++ /dev/null
@@ -1,328 +0,0 @@
-var http = require('http');
-var url = require('url');
-var math = require('mathjs');
-var xml = require('xml');
-var xml2js = require('xml2js').parseString;
-var strftime = require('strftime');
-var xor = require('base64-xor');
-var request = require('request');
-
-var config;
-var callbackReport;
-
-var max_retry = 2;
-var sleep_before_retry = 2000;
-
-var trx_balances = {};
-var trx_prices = {};
-
-function calculateSignature(userid, password, msisdn, timestamp) {
-    var a = msisdn.substr(msisdn.length - 4) + timestamp;
-    var b = userid.substr(0, 4) + password;
-    
-    return xor.encode(a,b);
-}
-
-function calculateBalanceSignature(userid, password, timestamp) {
-    var a = '0000' + timestamp;
-    var b = userid.substr(0, 4) + password;
-    
-    return xor.encode(a,b);
-}
-
-
-function createPayload(task) {
-    var timestamp = strftime('%H%M%S');
-    
-    var payload = {
-        datacell: [
-            { perintah: 'charge'},
-            {oprcode: task['remoteProduct']},
-            {userid: config.h2h_out.userid},
-            {time: timestamp},
-            {msisdn: task['destination']},
-            {ref_trxid: task['requestId']},
-            {sgn: calculateSignature(config.h2h_out.userid, config.h2h_out.password, task['destination'], timestamp)}
-        ]
-    };
-    
-    console.log(payload);
-    return "<?xml version=\"1.0\" ?>\n" + xml(payload);
-}
-
-function topupRequest(task, retry) {
-    //balanceCheck();
-    
-    var payload_xml = createPayload(task);
-    //console.log(payload_xml);
-    
-    var postRequest = {
-        host: "202.152.62.2",
-        path: "/RELOAD97.php",
-        port: 7713,
-        method: "POST",
-        headers: {
-            'Content-Type': 'text/xml',
-            'Content-Length': Buffer.byteLength(payload_xml)
-        }
-    };
-    
-    var buffer = "";
-    var req = http.request( postRequest, function( res )    {
-
-        console.log('Status code: ' + res.statusCode );
-        var buffer = "";
-        res.on( "data", function( data ) { buffer = buffer + data; } );
-        res.on( "end", function( data ) {             
-                topupResponseHandler(buffer);
-        });
-
-    });
-
-    req.on('error', function(e) {
-        console.log('problem with request: ' + e.message);
-        callbackReport(task['requestId'], '40', e.message);
-    });
-
-    req.write( payload_xml );
-    req.end();
-}
-
-function topupResponseHandler(body, request_id) {
-    xml2js(body, function (err, result) {
-        if (err) {
-            console.log(body);
-            callbackReport(request_id, '40', buffer);
-            return;
-        }
-        
-        console.log(result);
-        
-        request_id = result.datacell.ref_trxid[0].trim();
-        
-        var response_code = '68';
-        
-        var message = '';
-        try {
-            if (result.datacell.message && result.datacell.message.length > 0) {
-                message = result.datacell.message[0].trim();
-            } else if (result.datacell.msg && result.datacell.msg.length > 0) {
-                message = result.datacell.msg[0].trim();
-            } 
-        }
-        catch(err) {
-            message = 'exception saat parsing message';
-        }
-        
-        if (result.datacell.resultcode && result.datacell.resultcode[0] == '999') {
-            response_code = '40';
-        }
-        
-        if (message.indexOf('Nomor tujuan salah') >= 0) {
-            response_code = '14';
-        } else if (message.indexOf('*GAGAL, transaksi yang sama sudah ada dalam 10 menit') >= 0) {
-            response_code = '55';
-        } else if (message.indexOf('saldo sdh dikembalikan') >= 0) {
-            response_code = '40'
-        } else if (message.indexOf('Trx dpt diulang') >= 0) {
-            response_code = '40'
-        } else if (message.indexOf('SUKSES SN Operator:') >= 0) {
-            response_code = '00';
-            
-            var sn = parseSN(message);
-            console.log ('SN Operator: ' + sn);
-            
-            /*
-            if (!sn) {
-                
-                console.log('Missing real operator SN, using SN from suplier');
-                try {
-                    sn = result.datacell.trxid[0].trim();
-                }
-                catch(err) {
-                    sn = '';
-                }
-            }
-            */
-            
-            if (sn) {
-                message = 'SN=' + sn + '; ' + message;
-            } else {
-                message = 'SN belum didapat. ' + message;
-                response_code = '68';
-            }
-        }
-
-        
-        var price = priceFromMessage(message);
-        if (price != null) {
-            console.log('Harga: ' + price);
-            trx_prices[request_id] = price;
-            setTimeout(deleteTrxPrice, 3 * 24 * 3600 * 1000, request_id);
-        } else if (response_code == '00' && trx_prices[request_id] !==  undefined) {
-            price = trx_prices[request_id];
-            console.log('Harga: ' + price);
-            message = message + ' -- Harga: ' + price;
-        }
-        
-        var balance = balanceFromMessage(message);
-        if (balance != null) {
-            console.log('Saldo: ' + balance);
-            trx_balances[request_id] = balance;
-            setTimeout(deleteTrxBalance, 3 * 24 * 3600 * 1000, request_id);
-        } else if (response_code == '00' && trx_balances[request_id] !==  undefined) {
-            balance = trx_balances[request_id];
-            console.log('Saldo: ' + balance);
-            message = message + ' -- Saldo: ' + balance;
-        }
-    
-        callbackReport(request_id, response_code, message);
-    });
-}
-
-function deleteTrxPrice(request_id) {
-    delete trx_prices[request_id];
-}
-
-function deleteTrxBalance(request_id) {
-    delete trx_balances[request_id];
-}
-
-function parseSN(message) {
-    var results = message.match(/SN Operator: .+ SN Kami/);
-    if (!results || results.length <= 0) {
-        return '';
-    }
-    
-    var result = results[0];
-    result = result.replace('SN Operator:', '');
-    result = result.replace('SN Kami', '');
-    result = result.trim();
-    
-    if (result == '00') {
-        result = '';
-    }
-    
-    return result;
-}
-
-function createServer() {
-
-    var httpServer = http.createServer(function(req, res) {
-        var parsed_url = url.parse(req.url, true, true);
-
-        console.log('Got request from partner ("' + req.url + '")');
-        
-        var body = "";
-        req.on('data', function (chunk) {
-            body += chunk;
-        });
-        
-        req.on('end', function () {
-            res.writeHead(200);
-            res.end('OK');
-            
-            //console.log(body);
-            
-            if (parsed_url.pathname == '/sn') {
-                console.log('Reverse report -- SN');
-                topupResponseHandler(body);
-                
-            } else if (parsed_url.pathname = '/refund') {
-                console.log('Reverse report -- REFUND');
-                callbackReport(parsed_url.query.ref_trxid, '40', parsed_url.query.message);
-                
-            } else {
-                console.log('Reverse report -- UNKNOWN');
-                console.log('Ignore unknown request on reverse url');
-            }
-        });
-    });
-    
-    httpServer.listen(config.h2h_out.listen_port, function() {
-        console.log('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port);
-    });
-}
-
-function balanceCheck() {
-    var timestamp = strftime('%H%M%S');
-    
-    var payload = {
-        datacell: [
-            {perintah: 'saldo'},
-            {userid: config.h2h_out.userid},
-            {time: timestamp},
-            {sgn: calculateBalanceSignature(config.h2h_out.userid, config.h2h_out.password, timestamp)}
-        ]
-    };
-    
-    var postRequest = {
-        host: "202.152.62.2",
-        path: "/RELOAD97.php",
-        port: 7713,
-        method: "POST",
-        headers: {
-            'Content-Type': 'text/xml',
-            'Content-Length': Buffer.byteLength(payload_xml)
-        }
-    };
-    
-    var buffer = "";
-    var req = http.request( postRequest, function( res )    {
-
-        console.log('Status code: ' + res.statusCode );
-        var buffer = "";
-        res.on( "data", function( data ) { buffer = buffer + data; } );
-        res.on( "end", function( data ) {             
-            console.log('CHECK BALANCE RESULT:');
-            console.log(buffer);
-        });
-
-    });
-
-    req.on('error', function(e) {
-        console.log('problem with request: ' + e.message);
-    });
-
-    req.write( payload_xml );
-    req.end();
-    
-}
-
-function balanceFromMessage(message) {
-    var matches = message.match(/Saldo: Rp (\d+)/);
-    
-    if (!matches) {
-        return null;
-    }
-    if (matches.length < 2) {
-        return null;
-    }
-    
-    return matches[1];
-}
-
-function priceFromMessage(message) {
-    var matches = message.match(/Harga: (\d+)/);
-    
-    if (!matches) {
-        return null;
-    }
-    if (matches.length < 2) {
-        return null;
-    }
-    
-    return matches[1];
-}
-
-function start(_config, _callbackReport) {
-    config = _config;
-    callbackReport = _callbackReport
-
-    createServer();
-}
-
-exports.start = start;
-exports.topupRequest = topupRequest;
-exports.balanceFromMessage = balanceFromMessage;
-exports.priceFromMessage = priceFromMessage;
diff --git a/test.js b/test.js
index 00ee8f9..9fde64f 100644
--- a/test.js
+++ b/test.js
@@ -1,46 +1,13 @@
 var assert = require("assert");
 
-describe('partner-datacell', function() {
-    var partner = require('./partner-datacell');
+describe('partner-trugee', function() {
+    var partner = require('./partner-trugee');
     
-    describe('#balanceFromMessage', function() {
-        var message;
-        
-        it('should return 8306874', function() {
-            assert.equal(8306874, partner.balanceFromMessage('IR25 No: 085697273881 sudah diterima dan sdg diproses. SN Kami :243588112. Harga: 24750. Saldo: Rp 8306874.'));
-        });
-        
-        it('should return 8351574', function() {
-            assert.equal(8351574, partner.balanceFromMessage('TEL20 No: 085372113774 sudah diterima dan sdg diproses. SN Kami :243586975. Harga: 19950. Saldo: Rp 8351574.'));
-        });
-        
-        it('should return 0', function() {
-            assert.equal(0, partner.balanceFromMessage('TEL20 No: 085372113774 sudah diterima dan sdg diproses. SN Kami :243586975. Harga: 19950. Saldo: Rp 0.'));
-        });
-        
-        it('should return null', function() {
-            assert.equal(null, partner.balanceFromMessage('XL25 No: 08174945541 SUKSES SN Operator: 970729963933 SN Kami: 243591297.'));
-        });
-    });
-    
-    describe('#priceFromMessage', function() {
-        var message;
-        
-        it('should return 24750', function() {
-            assert.equal(24750, partner.priceFromMessage('IR25 No: 085697273881 sudah diterima dan sdg diproses. SN Kami :243588112. Harga: 24750. Saldo: Rp 8306874.'));
-        });
-        
-        it('should return 19950', function() {
-            assert.equal(19950, partner.priceFromMessage('TEL20 No: 085372113774 sudah diterima dan sdg diproses. SN Kami :243586975. Harga: 19950. Saldo: Rp 8351574.'));
-        });
-        
-        it('should return 0', function() {
-            assert.equal(0, partner.priceFromMessage('TEL20 No: 085372113774 sudah diterima dan sdg diproses. SN Kami :243586975. Harga: 0. Saldo: Rp 8351574.'));
+    describe('#calculateSignature', function() {
+        it('should return CQ4HBVFTVlJSXg==', function() {
+            assert.equal('CQ4HBVFTVlJSXg==', partner.calculateSignature('abcdef', '0812345678', '191001'));
         });
         
-        it('should return null', function() {
-            assert.equal(null, partner.priceFromMessage('XL25 No: 08174945541 SUKSES SN Operator: 970729963933 SN Kami: 243591297.'));
-        });
     });