var command_state = require('./protocol-state.js'),
    nconf = require('nconf');
nconf.env()
    .file({"file": "./lib/epp-config.json"});
var moment= require('moment');

var state;

module.exports = function() {

    return {
        "processMessage": function processMessage(m) {

            if (state) {
                if (m.command) {
                    var command = m.command;
                    var data = m.data;
                    var transactionId = data.transactionId;
                    if (! transactionId) {
                        transactionId = ['iwmn', moment().unix()].join('-');
                    }
                    state.command(command, data, transactionId, function(responseData) {
                        process.send(responseData);
                    });
                }
            }
            else { // Initialise a connection instance with registry configuration.
                var registry = m.registry;
                var registryConfig = nconf.get(registry);
                state = command_state(registry, registryConfig);
                var loginTransactionId = ['iwmn', 'login', moment().unix()].join('-');

                // Initialise the connection stream. Upon connection, attempt
                // to login.
                state.connection.initStream(function() {
                    console.log("Got connection");
                    setTimeout(function() {
                        state.command('login', {
                            "login": registryConfig.login,
                            "password": registryConfig.password
                        }, loginTransactionId,
                        function(data) {
                            console.log("Log in callback received: ", data);
                        });
                    }, 2000);
                });
            }
        }
    };
};


@@ -45,20 +45,16 @@
 e.js'),%0A
-    
 nconf = 
@@ -86,20 +86,20 @@
 nv()
-%0A    
 .file(%7B
+%0A    
 %22fil
@@ -125,16 +125,17 @@
 ig.json%22
+%0A
 %7D);%0Avar 
@@ -140,16 +140,17 @@
 r moment
+ 
 = requir
@@ -179,61 +179,53 @@
 e;%0A%0A
-module.exports = function() %7B%0A%0A    return %7B%0A        %22
+function Protocol() %7B%0A%0A%7D%0A%0AProtocol.prototype.
 proc
@@ -234,18 +234,18 @@
 sMessage
-%22:
+ =
  functio
@@ -267,24 +267,16 @@
 e(m) %7B%0A%0A
-        
     if (
@@ -280,32 +280,24 @@
 f (state) %7B%0A
-        
         if (
@@ -317,32 +317,24 @@
             
-  
-      
 var command 
@@ -354,32 +354,24 @@
             
-       
- 
 var data = m
@@ -377,24 +377,16 @@
 m.data;%0A
-        
         
@@ -445,22 +445,13 @@
     
-    
-    
 if (!
- 
 tran
@@ -459,32 +459,24 @@
 actionId) %7B%0A
-        
             
@@ -540,38 +540,26 @@
             
-        %7D%0A    
+%7D%0A
             
@@ -550,36 +550,32 @@
   %7D%0A            
-    
 state.command(co
@@ -643,24 +643,16 @@
         
-        
 process.
@@ -687,34 +687,20 @@
     
-        %7D);%0A      
+%7D);%0A
         
   %7D%0A
@@ -699,34 +699,16 @@
     
-  
 %7D%0A    
-        %7D%0A        
+%7D%0A
     
@@ -783,32 +783,24 @@
 on.%0A        
-       
- 
 var registry
@@ -814,24 +814,16 @@
 gistry;%0A
-        
         
@@ -868,32 +868,24 @@
 y);%0A        
-    
-    
 state = comm
@@ -921,24 +921,16 @@
 onfig);%0A
-        
         
@@ -1009,24 +1009,16 @@
         
- 
-       
 // Initi
@@ -1079,24 +1079,16 @@
         
-      
-  
 // to lo
@@ -1092,24 +1092,16 @@
  login.%0A
-        
         
@@ -1149,32 +1149,24 @@
             
-  
-      
 console.log(
@@ -1196,24 +1196,16 @@
         
-       
- 
 setTimeo
@@ -1216,32 +1216,24 @@
 unction() %7B%0A
-        
             
@@ -1281,24 +1281,16 @@
         
-    
-    
 %22login%22:
@@ -1312,24 +1312,16 @@
 .login,%0A
-        
         
@@ -1372,32 +1372,39 @@
 ord%0A            
+    %7D,%0A
             %7D, l
@@ -1399,18 +1399,19 @@
         
-%7D,
+   
  loginTr
@@ -1426,32 +1426,8 @@
 nId,
-%0A                       
  fun
@@ -1456,32 +1456,24 @@
             
-   
-     
 console.log(
@@ -1521,32 +1521,24 @@
             
-        
 %7D);%0A        
@@ -1531,32 +1531,37 @@
   %7D);%0A          
+  %7D,%0A
           %7D, 200
@@ -1554,18 +1554,17 @@
         
-%7D,
+ 
  2000);%0A
@@ -1575,51 +1575,45 @@
     
-    
-    %7D);%0A            %7D%0A        %7D%0A    %7D;%0A%7D
+%7D);%0A    %7D%0A%7D;%0Amodule.exports = Protocol
 ;%0A%0A

change protocol to be more prototyped