diff --git a/src/configuration.cpp b/src/configuration.cpp
index 2db9c45..60097a6 100644
--- a/src/configuration.cpp
+++ b/src/configuration.cpp
@@ -22,8 +22,7 @@
 #include "identity-challenge/challenge-module.hpp"
 #include <ndn-cxx/util/io.hpp>
 #include <boost/filesystem.hpp>
-#include <name-assignments/assignment-funcs.hpp>
-#include <name-assignments/assignment-or.hpp>
+#include "name-assignments/assignment-funcs.hpp"
 
 namespace ndn {
 namespace ndncert {
@@ -153,25 +152,13 @@
   m_nameAssignmentFunc = nullptr;
   auto nameAssignmentItems = configJson.get_child_optional(CONFIG_NAME_ASSIGNMENT);
   if (nameAssignmentItems) {
-    std::list<NameAssignmentFunc> funcs;
     for (const auto item : *nameAssignmentItems) {
-        auto factory = NameAssignmentFuncFactory::createNameAssignmentFuncFactory(item.first);
-        if (!factory) {
-            BOOST_THROW_EXCEPTION(std::runtime_error("Invalid assignment factory type"));
-        }
-        try {
-            funcs.push_back(factory->getFunction(item.second.data()));
-        } catch (const std::exception& e) {
-            BOOST_THROW_EXCEPTION(std::runtime_error("Error on creating function"));
-        }
-    }
-    if (funcs.size() < 1) {
-        BOOST_THROW_EXCEPTION(std::runtime_error("Empty assignment body supplied"));
-    } else if (funcs.size() == 1) {
-        m_nameAssignmentFunc = *funcs.begin();
-    } else {
-        AssignmentOr orFunction;
-        m_nameAssignmentFunc = orFunction.getFunction(funcs);
+      try {
+        m_heuristic.push_back(NameAssignmentFuncFactory::createNameAssignmentFuncFactory(item.first));
+      }
+      catch (const std::exception& e) {
+        BOOST_THROW_EXCEPTION(std::runtime_error("Error on creating name assignment function"));
+      }
     }
   }
 }
