diff --git a/include/behaviortree_cpp/decorators/loop_node.h b/include/behaviortree_cpp/decorators/loop_node.h
index 595ccac9e..8c7032b35 100644
--- a/include/behaviortree_cpp/decorators/loop_node.h
+++ b/include/behaviortree_cpp/decorators/loop_node.h
@@ -121,6 +121,30 @@ class LoopNode : public DecoratorNode
   }
 };
 
+template <> inline
+SharedQueue<int> convertFromString<SharedQueue<int>>(StringView str)
+{
+  auto parts = splitString(str, ';');
+  SharedQueue<int> output = std::make_shared<std::deque<int>>();
+  for (const StringView& part : parts)
+  {
+    output->push_back(convertFromString<int>(part));
+  }
+  return output;
+}
+
+template <> inline
+SharedQueue<bool> convertFromString<SharedQueue<bool>>(StringView str)
+{
+  auto parts = splitString(str, ';');
+  SharedQueue<bool> output = std::make_shared<std::deque<bool>>();
+  for (const StringView& part : parts)
+  {
+    output->push_back(convertFromString<bool>(part));
+  }
+  return output;
+}
+
 template <> inline
 SharedQueue<double> convertFromString<SharedQueue<double>>(StringView str)
 {
@@ -133,5 +157,17 @@ SharedQueue<double> convertFromString<SharedQueue<double>>(StringView str)
   return output;
 }
 
+template <> inline
+SharedQueue<std::string> convertFromString<SharedQueue<std::string>>(StringView str)
+{
+  auto parts = splitString(str, ';');
+  SharedQueue<std::string> output = std::make_shared<std::deque<std::string>>();
+  for (const StringView& part : parts)
+  {
+    output->push_back(convertFromString<std::string>(part));
+  }
+  return output;
+}
+
 
 }   // namespace BT
diff --git a/src/bt_factory.cpp b/src/bt_factory.cpp
index 45d1e2cf5..6d0c297d5 100644
--- a/src/bt_factory.cpp
+++ b/src/bt_factory.cpp
@@ -91,6 +91,8 @@ BehaviorTreeFactory::BehaviorTreeFactory():
   registerNodeType<SwitchNode<5>>("Switch5");
   registerNodeType<SwitchNode<6>>("Switch6");
   
+  registerNodeType<LoopNode<int>>("LoopInt");
+  registerNodeType<LoopNode<bool>>("LoopBool");
   registerNodeType<LoopNode<double>>("LoopDouble");
   registerNodeType<LoopNode<std::string>>("LoopString");