diff --git a/src/connectivity/connectionmanager.cpp b/src/connectivity/connectionmanager.cpp
index 61f507f75218f478dbdd4999ba0249327120a97c..853b84148604010212bb55c3e50cb932466dbf90 100644
--- a/src/connectivity/connectionmanager.cpp
+++ b/src/connectivity/connectionmanager.cpp
@@ -643,7 +643,7 @@ ConnectionManager::Impl::connectDevice(const std::shared_ptr<dht::crypto::Certif
             ice_config.streamsCount = JamiAccount::ICE_STREAMS_COUNT;
             ice_config.compCountPerStream = JamiAccount::ICE_COMP_COUNT_PER_STREAM;
             info->ice_ = Manager::instance().getIceTransportFactory().createUTransport(
-                sthis->account.getAccountID().c_str());
+                sthis->account.getAccountID());
             if (!info->ice_) {
                 JAMI_ERR("Cannot initialize ICE session.");
                 eraseInfo();
@@ -1021,7 +1021,7 @@ ConnectionManager::Impl::onDhtPeerRequest(const PeerConnectionRequest& req,
         ice_config.compCountPerStream = JamiAccount::ICE_COMP_COUNT_PER_STREAM;
         ice_config.master = true;
         info->ice_ = Manager::instance().getIceTransportFactory().createUTransport(
-            shared->account.getAccountID().c_str());
+            shared->account.getAccountID());
         if (not info->ice_) {
             JAMI_ERR("Cannot initialize ICE session.");
             eraseInfo();
diff --git a/src/connectivity/ice_transport.cpp b/src/connectivity/ice_transport.cpp
index 3c56dad51785848fe2bd80d438c2fca3a035ecc0..848e9b25d22709e6ea59222f8186a8a9a514a2a7 100644
--- a/src/connectivity/ice_transport.cpp
+++ b/src/connectivity/ice_transport.cpp
@@ -97,7 +97,7 @@ public:
 class IceTransport::Impl
 {
 public:
-    Impl(const char* name);
+    Impl(std::string_view name);
     ~Impl();
 
     void initIceInstance(const IceTransportOptions& options);
@@ -153,7 +153,7 @@ public:
     std::condition_variable_any iceCV_ {};
 
     std::string sessionName_ {};
-    std::unique_ptr<pj_pool_t, std::function<void(pj_pool_t*)>> pool_ {};
+    std::unique_ptr<pj_pool_t, decltype(&pj_pool_release)> pool_ {nullptr, pj_pool_release};
     bool isTcp_ {false};
     bool upnpEnabled_ {false};
     IceTransportCompleteCb on_initdone_cb_ {};
@@ -325,12 +325,10 @@ add_turn_server(pj_pool_t& pool, pj_ice_strans_cfg& cfg, const TurnServerInfo& i
 
 //==============================================================================
 
-IceTransport::Impl::Impl(const char* name)
+IceTransport::Impl::Impl(std::string_view name)
     : sessionName_(name)
-    , pool_(nullptr, [](pj_pool_t* pool) { pj_pool_release(pool); })
-    , thread_()
 {
-    JAMI_DBG("[ice:%p] Creating IceTransport session for \"%s\"", this, name);
+    JAMI_DEBUG("[ice:{}] Creating IceTransport session for \"{:s}\"", fmt::ptr(this), name);
 }
 
 IceTransport::Impl::~Impl()
@@ -559,7 +557,7 @@ IceTransport::Impl::initIceInstance(const IceTransportOptions& options)
 bool
 IceTransport::Impl::_isInitialized() const
 {
-    if (auto icest = icest_) {
+    if (auto *icest = icest_) {
         auto state = pj_ice_strans_get_state(icest);
         return state >= PJ_ICE_STRANS_STATE_SESS_READY and state != PJ_ICE_STRANS_STATE_FAILED;
     }
@@ -569,7 +567,7 @@ IceTransport::Impl::_isInitialized() const
 bool
 IceTransport::Impl::_isStarted() const
 {
-    if (auto icest = icest_) {
+    if (auto *icest = icest_) {
         auto state = pj_ice_strans_get_state(icest);
         return state >= PJ_ICE_STRANS_STATE_NEGO and state != PJ_ICE_STRANS_STATE_FAILED;
     }
@@ -579,7 +577,7 @@ IceTransport::Impl::_isStarted() const
 bool
 IceTransport::Impl::_isRunning() const
 {
-    if (auto icest = icest_) {
+    if (auto *icest = icest_) {
         auto state = pj_ice_strans_get_state(icest);
         return state >= PJ_ICE_STRANS_STATE_RUNNING and state != PJ_ICE_STRANS_STATE_FAILED;
     }
@@ -589,7 +587,7 @@ IceTransport::Impl::_isRunning() const
 bool
 IceTransport::Impl::_isFailed() const
 {
-    if (auto icest = icest_)
+    if (auto *icest = icest_)
         return pj_ice_strans_get_state(icest) == PJ_ICE_STRANS_STATE_FAILED;
     return false;
 }
@@ -1142,7 +1140,7 @@ IceTransport::Impl::_waitForInitialization(std::chrono::milliseconds timeout)
 
 //==============================================================================
 
-IceTransport::IceTransport(const char* name)
+IceTransport::IceTransport(std::string_view name)
     : pimpl_ {std::make_unique<Impl>(name)}
 {}
 
@@ -1155,7 +1153,6 @@ void
 IceTransport::initIceInstance(const IceTransportOptions& options)
 {
     pimpl_->initIceInstance(options);
-
     jami_tracepoint(ice_transport_context, reinterpret_cast<uint64_t>(this));
 }
 
@@ -1830,7 +1827,7 @@ IceTransportFactory::IceTransportFactory()
 IceTransportFactory::~IceTransportFactory() {}
 
 std::shared_ptr<IceTransport>
-IceTransportFactory::createTransport(const char* name)
+IceTransportFactory::createTransport(std::string_view name)
 {
     try {
         return std::make_shared<IceTransport>(name);
@@ -1841,7 +1838,7 @@ IceTransportFactory::createTransport(const char* name)
 }
 
 std::unique_ptr<IceTransport>
-IceTransportFactory::createUTransport(const char* name)
+IceTransportFactory::createUTransport(std::string_view name)
 {
     try {
         return std::make_unique<IceTransport>(name);
diff --git a/src/connectivity/ice_transport.h b/src/connectivity/ice_transport.h
index b5bc0a22ade4828e8033d79671431214a786fd5a..50d71e2c8700942db23f2e8273f60f9e006c2b7c 100644
--- a/src/connectivity/ice_transport.h
+++ b/src/connectivity/ice_transport.h
@@ -129,7 +129,7 @@ public:
     /**
      * Constructor
      */
-    IceTransport(const char* name);
+    IceTransport(std::string_view name);
     ~IceTransport();
 
     void initIceInstance(const IceTransportOptions& options);
@@ -256,9 +256,9 @@ public:
     IceTransportFactory();
     ~IceTransportFactory();
 
-    std::shared_ptr<IceTransport> createTransport(const char* name);
+    std::shared_ptr<IceTransport> createTransport(std::string_view name);
 
-    std::unique_ptr<IceTransport> createUTransport(const char* name);
+    std::unique_ptr<IceTransport> createUTransport(std::string_view name);
 
     /**
      * PJSIP specifics
diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp
index 2b5355995e8626327253c9036e1e74af764cd714..df73a76f6a50d49d1a2e59c49eaae6b0a7c975bb 100644
--- a/src/sip/sipcall.cpp
+++ b/src/sip/sipcall.cpp
@@ -3307,7 +3307,7 @@ SIPCall::createIceMediaTransport(bool isReinvite)
 {
     auto& iceTransportFactory = Manager::instance().getIceTransportFactory();
 
-    auto mediaTransport = iceTransportFactory.createTransport(getCallId().c_str());
+    auto mediaTransport = iceTransportFactory.createTransport(getCallId());
     if (mediaTransport) {
         JAMI_DBG("[call:%s] Successfully created media ICE transport [ice:%p]",
                  getCallId().c_str(),