diff --git a/control/actions.cpp b/control/actions.cpp
index 25b6a09..3c3b194 100644
--- a/control/actions.cpp
+++ b/control/actions.cpp
@@ -107,9 +107,9 @@
             try
             {
                 auto value = zone.template getPropertyValue<int64_t>(
-                        entry.first,
-                        std::get<intfPos>(entry.second),
-                        std::get<propPos>(entry.second));
+                        std::get<pathPos>(entry),
+                        std::get<intfPos>(entry),
+                        std::get<propPos>(entry));
                 base = std::max(base, value);
             }
             catch (const std::out_of_range& oore)
@@ -141,9 +141,9 @@
                         {
                             return sum +
                                 zone.template getPropertyValue<int64_t>(
-                                    entry.first,
-                                    std::get<intfPos>(entry.second),
-                                    std::get<propPos>(entry.second));
+                                    std::get<pathPos>(entry),
+                                    std::get<intfPos>(entry),
+                                    std::get<propPos>(entry));
                         }
                         catch (const std::out_of_range& oore)
                         {
@@ -193,9 +193,9 @@
                         {
                             return sum +
                                 zone.template getPropertyValue<int64_t>(
-                                    entry.first,
-                                    std::get<intfPos>(entry.second),
-                                    std::get<propPos>(entry.second));
+                                    std::get<pathPos>(entry),
+                                    std::get<intfPos>(entry),
+                                    std::get<propPos>(entry));
                         }
                         catch (const std::out_of_range& oore)
                         {
