diff --git a/src/interpreter.cpp b/src/interpreter.cpp
index eca4879..d9d5214 100644
--- a/src/interpreter.cpp
+++ b/src/interpreter.cpp
@@ -10,31 +10,6 @@
 #include "datastore_access.hpp"
 #include "interpreter.hpp"
 
-struct leafDataToString : boost::static_visitor<std::string> {
-    std::string operator()(const enum_& data) const
-    {
-        return data.m_value;
-    }
-
-    std::string operator()(const binary_& data) const
-    {
-        return data.m_value;
-    }
-
-    std::string operator()(const identityRef_& data) const
-    {
-        return data.m_value;
-    }
-
-    template <typename T>
-    std::string operator()(const T& data) const
-    {
-        std::stringstream stream;
-        stream << data;
-        return stream.str();
-    }
-};
-
 void Interpreter::operator()(const commit_&) const
 {
     m_datastore.commitChanges();
@@ -64,7 +39,7 @@
 {
     auto items = m_datastore.getItems(absolutePathFromCommand(get));
     for (auto it : items) {
-        std::cout << it.first << " = " << boost::apply_visitor(leafDataToString(), it.second) << std::endl;
+        std::cout << it.first << " = " << leafDataToString(it.second) << std::endl;
     }
 }
 
diff --git a/src/utils.cpp b/src/utils.cpp
index 421fc3e..7f93d27 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -77,3 +77,33 @@
             [prefix] (auto it) { return boost::starts_with(it, prefix); });
     return filtered;
 }
+
+struct leafDataToStringVisitor : boost::static_visitor<std::string> {
+    std::string operator()(const enum_& data) const
+    {
+        return data.m_value;
+    }
+
+    std::string operator()(const binary_& data) const
+    {
+        return data.m_value;
+    }
+
+    std::string operator()(const identityRef_& data) const
+    {
+        return data.m_value;
+    }
+
+    template <typename T>
+    std::string operator()(const T& data) const
+    {
+        std::stringstream stream;
+        stream << data;
+        return stream.str();
+    }
+};
+
+std::string leafDataToString(const leaf_data_ value)
+{
+    return boost::apply_visitor(leafDataToStringVisitor(), value);
+}
diff --git a/src/utils.hpp b/src/utils.hpp
index dcaefb3..a9fde88 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -21,3 +21,4 @@
 std::string fullNodeName(const dataPath_& location, const ModuleNodePair& pair);
 /** Returns a subset of the original set with only the strings starting with prefix */
 std::set<std::string> filterByPrefix(const std::set<std::string>& set, const std::string_view prefix);
+std::string leafDataToString(const leaf_data_ value);
