diff --git a/receiver/src/monitoring/receiver_monitoring_client_impl.h b/receiver/src/monitoring/receiver_monitoring_client_impl.h
index 04fc5b7f458b73c08db9a403d7c89c38d39391b4..18600fbe113af4e9ec25de82d5f2295f5fdbaa3e 100644
--- a/receiver/src/monitoring/receiver_monitoring_client_impl.h
+++ b/receiver/src/monitoring/receiver_monitoring_client_impl.h
@@ -33,7 +33,7 @@ public:
 
     SharedCache cache_;
 public:
-    IO* io__;
+    std::unique_ptr<IO> io__;
     AbstractLogger* log__;
     std::unique_ptr<HttpClient> http_client__;
 
diff --git a/receiver/unittests/monitoring/test_monitoring_client.cpp b/receiver/unittests/monitoring/test_monitoring_client.cpp
index 0df6ef17c89e895aa10cfa672de78af5646d3974..ce904b5cb83d92700e4d66c1a02e1cf206304756 100644
--- a/receiver/unittests/monitoring/test_monitoring_client.cpp
+++ b/receiver/unittests/monitoring/test_monitoring_client.cpp
@@ -101,14 +101,14 @@ namespace {
     }
 
     TEST_F(MonitoringClientTest, GetProducerToReceiverTransfer_SendProducerToReceiverTransferDataPoint) {
-        auto x = new ProducerToReceiverTransferDataPoint;
+        std::unique_ptr<ProducerToReceiverTransferDataPoint> x{ new ProducerToReceiverTransferDataPoint};
         x->set_totalfilesize(100);
         x->set_totaltransferreceivetimeinmicroseconds(200);
         x->set_totalwriteiotimeinmicroseconds(300);
         x->set_totaldbtimeinmicroseconds(400);
         EXPECT_CALL(*mock_toBeSend, GetProducerToReceiverTransfer(
                 "p1", "i1", "b1", "so1", "st1"
-                )).WillOnce(Return(x));
+                )).WillOnce(Return(x.get()));
 
         monitoring->sendingThreadRunning__ = true; // to trick client and initiata data transfer
         monitoring->SendProducerToReceiverTransferDataPoint("p1", "i1", "b1", "so1", "st1", 1, 2, 3, 4);
@@ -120,14 +120,14 @@ namespace {
     }
 
     TEST_F(MonitoringClientTest, GetProducerToReceiverTransfer_SendRdsRequestWasMissDataPoint) {
-        auto x = new RdsToConsumerDataPoint;
+        std::unique_ptr<RdsToConsumerDataPoint> x {new RdsToConsumerDataPoint};
         x->set_totalfilesize(100);
         x->set_hits(200);
         x->set_misses(300);
         x->set_totaltransfersendtimeinmicroseconds(400);
         EXPECT_CALL(*mock_toBeSend, GetReceiverDataServerToConsumer(
                 "p1", "i1", "b1", "so1", "st1"
-                )).WillOnce(Return(x));
+                )).WillOnce(Return(x.get()));
 
         monitoring->sendingThreadRunning__ = true; // to trick client and initiata data transfer
         monitoring->SendRdsRequestWasMissDataPoint("p1", "i1", "b1", "so1", "st1");
@@ -139,14 +139,14 @@ namespace {
     }
 
     TEST_F(MonitoringClientTest, GetProducerToReceiverTransfer_SendReceiverRequestDataPoint) {
-        auto x = new RdsToConsumerDataPoint;
+        std::unique_ptr<RdsToConsumerDataPoint> x{new RdsToConsumerDataPoint};
         x->set_totalfilesize(100);
         x->set_hits(200);
         x->set_misses(300);
         x->set_totaltransfersendtimeinmicroseconds(400);
         EXPECT_CALL(*mock_toBeSend, GetReceiverDataServerToConsumer(
                 "p1", "i1", "b1", "so1", "st1"
-                )).WillOnce(Return(x));
+                )).WillOnce(Return(x.get()));
 
         monitoring->sendingThreadRunning__ = true; // to trick client and initiata data transfer
         monitoring->SendReceiverRequestDataPoint("p1", "i1", "b1", "so1", "st1", 2, 3);