diff --git a/src/configuration.cpp b/src/configuration.cpp
index 60097a6..0117df7 100644
--- a/src/configuration.cpp
+++ b/src/configuration.cpp
@@ -153,12 +153,11 @@
   auto nameAssignmentItems = configJson.get_child_optional(CONFIG_NAME_ASSIGNMENT);
   if (nameAssignmentItems) {
     for (const auto item : *nameAssignmentItems) {
-      try {
-        m_heuristic.push_back(NameAssignmentFuncFactory::createNameAssignmentFuncFactory(item.first));
-      }
-      catch (const std::exception& e) {
+      auto func = NameAssignmentFuncFactory::createNameAssignmentFuncFactory(item.first, item.second.data());
+      if (func == nullptr) {
         BOOST_THROW_EXCEPTION(std::runtime_error("Error on creating name assignment function"));
       }
+      m_heuristic.push_back(std::move(func));
     }
   }
 }
diff --git a/src/name-assignments/assignment-funcs.cpp b/src/name-assignments/assignment-funcs.cpp
index 501c510..50c8df1 100644
--- a/src/name-assignments/assignment-funcs.cpp
+++ b/src/name-assignments/assignment-funcs.cpp
@@ -27,13 +27,17 @@
 NameAssignmentFuncFactory::NameAssignmentFuncFactory(const std::string& factoryType, const std::string& format)
   : FACTORY_TYPE(factoryType)
 {
-  auto s = format;
-  size_t pos = 0;
-  while ((pos = s.find("/")) != std::string::npos) {
-    m_nameFormat.push_back(s.substr(0, pos));
-    s.erase(0, pos + 1);
+  size_t index = 0, startIndex = 0;
+  while ((index = format.find("/", startIndex)) != std::string::npos) {
+    auto component = format.substr(startIndex, index - startIndex);
+    if (!component.empty()) {
+      m_nameFormat.push_back(component);
+    }
+    startIndex = index + 1;
   }
-  m_nameFormat.push_back(s);
+  if (startIndex != format.size()) {
+    m_nameFormat.push_back(format.substr(startIndex));
+  }
 }
 
 unique_ptr<NameAssignmentFuncFactory>
