diff --git a/common/server.cc b/common/server.cc
index b37e6dc..e1759cb 100644
--- a/common/server.cc
+++ b/common/server.cc
@@ -157,14 +157,17 @@
 
         if (state.previsouly_connected()) {
             // Reconciliation / recovery case
+            std::cout << "Reconciliation / Recovery case" << std::endl;
             if (state.is_activated()){
                 // Adding extra olt indication of current state
                 openolt::Indication ind;
                 openolt::OltIndication* oltInd = new openolt::OltIndication();
                 if (state.is_activated()) {
                     oltInd->set_oper_state("up");
+                    std::cout << "Extra OLT indication up" << std::endl;
                 } else {
                     oltInd->set_oper_state("down");
+                    std::cout << "Extra OLT indication down" << std::endl;
                 }
                 ind.set_allocated_olt_ind(oltInd);
                 oltIndQ.push(ind);
diff --git a/src/core.cc b/src/core.cc
index b0772cc..2ae596d 100644
--- a/src/core.cc
+++ b/src/core.cc
@@ -347,9 +347,9 @@
     char str2[MAX_CHAR_LENGTH];
     memset(&arraySend, 0, buf.len);
 
-    std::cout << "Sending omci msg to ONU of length is "
-         << buf.len
-         << std::endl;
+    // std::cout << "Sending omci msg to ONU of length is "
+    //      << buf.len
+    //      << std::endl;
 
     for (idx1=0,idx2=0; idx1<((buf.len)*2); idx1++,idx2++) {
        sprintf(str1,"%c", pkt[idx1]);
@@ -360,15 +360,15 @@
 
     buf.val = (uint8_t *)malloc((buf.len)*sizeof(uint8_t));
     memcpy(buf.val, (uint8_t *)arraySend, buf.len);
-
-    std::cout << "After converting bytes to hex "
-              << buf.val << buf.len << std::endl;
+    //
+    // std::cout << "After converting bytes to hex "
+    //           << buf.val << buf.len << std::endl;
 
     err = bcmbal_pkt_send(0, proxy_pkt_dest, (const char *)(buf.val), buf.len);
 
-    std::cout << "OMCI request msg of length " << buf.len
-              << " sent to ONU" << onu_id
-              << " through PON " << intf_id << std::endl;
+    // std::cout << "OMCI request msg of length " << buf.len
+    //           << " sent to ONU" << onu_id
+    //           << " through PON " << intf_id << std::endl;
 
     free(buf.val);
 
diff --git a/src/indications.cc b/src/indications.cc
index 203b675..1d4a7d2 100644
--- a/src/indications.cc
+++ b/src/indications.cc
@@ -327,7 +327,7 @@
     bcmbal_packet_itu_omci_channel_rx *in =
         (bcmbal_packet_itu_omci_channel_rx *)obj;
 
-    std::cout << "omci indication" << std::endl;
+    // std::cout << "omci indication" << std::endl;
 
     omci_ind->set_intf_id(in->key.packet_send_dest.u.itu_omci_channel.intf_id);
     omci_ind->set_onu_id(in->key.packet_send_dest.u.itu_omci_channel.sub_term_id);
