diff --git a/src/config_parser.cpp b/src/config_parser.cpp
index 867d611..cd9960d 100644
--- a/src/config_parser.cpp
+++ b/src/config_parser.cpp
@@ -147,7 +147,7 @@
 struct Parse
 {
     std::reference_wrapper<const fs::path> filename;
-    SectionMap sections;
+    SectionMap map;
     KeyValuesMap* section;
     std::vector<std::string> warnings;
     size_t lineno;
@@ -179,10 +179,10 @@
             }
         }
         auto s = line.substr(0, cpos);
-        auto it = sections.find(s);
-        if (it == sections.end())
+        auto it = map.find(s);
+        if (it == map.end())
         {
-            std::tie(it, std::ignore) = sections.emplace(
+            std::tie(it, std::ignore) = map.emplace(
                 Section(Section::unchecked(), s), KeyValuesMapList{});
         }
         section = &it->second.emplace_back();
@@ -270,8 +270,8 @@
             fmt::format("{}: Read error: {}", filename.native(), e.what()));
     }
 
+    this->map = std::move(parse.map);
     this->filename = filename;
-    this->sections = std::move(parse.sections);
     this->warnings = std::move(parse.warnings);
 }
 
diff --git a/src/config_parser.hpp b/src/config_parser.hpp
index 6b633e94..8ec693a 100644
--- a/src/config_parser.hpp
+++ b/src/config_parser.hpp
@@ -160,6 +160,8 @@
 class Parser
 {
   public:
+    SectionMap map;
+
     Parser() = default;
 
     /** @brief Constructor
@@ -167,12 +169,6 @@
      */
     Parser(const fs::path& filename);
 
-    /** @brief Retrieve the map of all values in the file */
-    inline const SectionMap& getMap() const noexcept
-    {
-        return sections;
-    }
-
     /** @brief Determine if there were warnings parsing the file
      *  @return The number of parsing issues in the file
      */
@@ -196,7 +192,6 @@
 
   private:
     fs::path filename;
-    SectionMap sections;
     std::vector<std::string> warnings;
 };
 
diff --git a/src/dhcp_configuration.cpp b/src/dhcp_configuration.cpp
index ef0a6a6..6684713 100644
--- a/src/dhcp_configuration.cpp
+++ b/src/dhcp_configuration.cpp
@@ -85,7 +85,7 @@
     config::Parser parser(config::pathForIntfConf(manager.getConfDir(),
                                                   *interfaceStrList.begin()));
 
-    auto value = parser.getMap().getLastValueString("DHCP", prop);
+    auto value = parser.map.getLastValueString("DHCP", prop);
     if (value == nullptr)
     {
         auto msg = fmt::format("Missing config section DHCP[{}]", prop);
diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 99ec98a..a3b2519 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -111,7 +111,7 @@
         MacAddressIntf::macAddress(getMACAddress(intfName));
     }
     EthernetInterfaceIntf::ntpServers(
-        config.getMap().getValueStrings("Network", "NTP"));
+        config.map.getValueStrings("Network", "NTP"));
 
     EthernetInterfaceIntf::linkUp(linkUp());
     EthernetInterfaceIntf::mtu(mtu());
@@ -786,7 +786,7 @@
 {
     EthernetInterfaceIntf::nameservers(getNameServerFromResolvd());
     EthernetInterfaceIntf::staticNameServers(
-        config.getMap().getValueStrings("Network", "DNS"));
+        config.map.getValueStrings("Network", "DNS"));
 }
 
 ServerList EthernetInterface::getNameServerFromResolvd()
diff --git a/src/util.cpp b/src/util.cpp
index 724eae6..cad1ed8 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -366,7 +366,7 @@
 
 bool getIPv6AcceptRA(const config::Parser& config)
 {
-    auto value = config.getMap().getLastValueString("Network", "IPv6AcceptRA");
+    auto value = config.map.getLastValueString("Network", "IPv6AcceptRA");
     if (value == nullptr)
     {
         auto msg = fmt::format(
@@ -391,7 +391,7 @@
 
 EthernetInterfaceIntf::DHCPConf getDHCPValue(const config::Parser& config)
 {
-    const auto value = config.getMap().getLastValueString("Network", "DHCP");
+    const auto value = config.map.getLastValueString("Network", "DHCP");
     if (value == nullptr)
     {
         auto msg =
diff --git a/test/test_config_parser.cpp b/test/test_config_parser.cpp
index e7d44ef..0dd16af 100644
--- a/test/test_config_parser.cpp
+++ b/test/test_config_parser.cpp
@@ -94,7 +94,7 @@
     void ValidateSectionMap()
     {
         EXPECT_THAT(
-            parser.getMap(),
+            parser.map,
             testing::ContainerEq(SectionMap(SectionMapInt{
                 {"Match", {{{"Name", {"eth0"}}}}},
                 {"Network",
@@ -114,7 +114,7 @@
 {
     EXPECT_TRUE(parser.getFilename().empty());
     EXPECT_EQ(0, parser.getWarnings().size());
-    EXPECT_EQ(SectionMap(), parser.getMap());
+    EXPECT_EQ(SectionMap(), parser.map);
 }
 
 TEST_F(TestConfigParser, ReadDirectory)
@@ -122,7 +122,7 @@
     parser.setFile("/");
     EXPECT_EQ("/", parser.getFilename());
     EXPECT_EQ(1, parser.getWarnings().size());
-    EXPECT_EQ(SectionMap(), parser.getMap());
+    EXPECT_EQ(SectionMap(), parser.map);
 }
 
 TEST_F(TestConfigParser, ReadConfigDataMissingFile)
@@ -130,7 +130,7 @@
     parser.setFile("/no-such-path");
     EXPECT_EQ("/no-such-path", parser.getFilename());
     EXPECT_EQ(1, parser.getWarnings().size());
-    EXPECT_EQ(SectionMap(), parser.getMap());
+    EXPECT_EQ(SectionMap(), parser.map);
 }
 
 TEST_F(TestConfigParser, ReadConfigDataFromFile)
@@ -141,7 +141,7 @@
     EXPECT_EQ(4, parser.getWarnings().size());
     ValidateSectionMap();
 
-    const auto& map = parser.getMap();
+    const auto& map = parser.map;
 
     EXPECT_EQ("eth0", *map.getLastValueString("Match", "Name"));
     EXPECT_EQ("yes", *map.getLastValueString("Network", "DHCP"));
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index e340d7b..ac96190 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -165,7 +165,7 @@
     fs::path filePath = confDir;
     filePath /= "00-bmc-test0.network";
     config::Parser parser(filePath.string());
-    EXPECT_EQ(servers, parser.getMap().getValueStrings("Network", "DNS"));
+    EXPECT_EQ(servers, parser.map.getValueStrings("Network", "DNS"));
 }
 
 TEST_F(TestEthernetInterface, getDynamicNameServers)
@@ -184,7 +184,7 @@
     fs::path filePath = confDir;
     filePath /= "00-bmc-test0.network";
     config::Parser parser(filePath.string());
-    EXPECT_EQ(servers, parser.getMap().getValueStrings("Network", "NTP"));
+    EXPECT_EQ(servers, parser.map.getValueStrings("Network", "NTP"));
 }
 
 TEST_F(TestEthernetInterface, addGateway)
diff --git a/test/test_vlan_interface.cpp b/test/test_vlan_interface.cpp
index 728199a..8d31c7b 100644
--- a/test/test_vlan_interface.cpp
+++ b/test/test_vlan_interface.cpp
@@ -103,14 +103,13 @@
     filePath /= "test0.50.netdev";
 
     config::Parser parser(filePath);
-    EXPECT_EQ(parser.getMap(),
-              config::SectionMap(config::SectionMapInt{
-                  {"NetDev",
-                   {
-                       {{"Name", {"test0.50"}}, {"Kind", {"vlan"}}},
-                   }},
-                  {"VLAN", {{{"Id", {"50"}}}}},
-              }));
+    EXPECT_EQ(parser.map, config::SectionMap(config::SectionMapInt{
+                              {"NetDev",
+                               {
+                                   {{"Name", {"test0.50"}}, {"Kind", {"vlan"}}},
+                               }},
+                              {"VLAN", {{{"Id", {"50"}}}}},
+                          }));
 }
 
 TEST_F(TestVlanInterface, deleteVLAN)
@@ -131,26 +130,24 @@
     fs::path filePath = confDir;
     filePath /= "test0.50.netdev";
     config::Parser parser(filePath);
-    EXPECT_EQ(parser.getMap(),
-              config::SectionMap(config::SectionMapInt{
-                  {"NetDev",
-                   {
-                       {{"Name", {"test0.50"}}, {"Kind", {"vlan"}}},
-                   }},
-                  {"VLAN", {{{"Id", {"50"}}}}},
-              }));
+    EXPECT_EQ(parser.map, config::SectionMap(config::SectionMapInt{
+                              {"NetDev",
+                               {
+                                   {{"Name", {"test0.50"}}, {"Kind", {"vlan"}}},
+                               }},
+                              {"VLAN", {{{"Id", {"50"}}}}},
+                          }));
 
     filePath = confDir;
     filePath /= "test0.60.netdev";
     parser.setFile(filePath);
-    EXPECT_EQ(parser.getMap(),
-              config::SectionMap(config::SectionMapInt{
-                  {"NetDev",
-                   {
-                       {{"Name", {"test0.60"}}, {"Kind", {"vlan"}}},
-                   }},
-                  {"VLAN", {{{"Id", {"60"}}}}},
-              }));
+    EXPECT_EQ(parser.map, config::SectionMap(config::SectionMapInt{
+                              {"NetDev",
+                               {
+                                   {{"Name", {"test0.60"}}, {"Kind", {"vlan"}}},
+                               }},
+                              {"VLAN", {{{"Id", {"60"}}}}},
+                          }));
 
     deleteVlan("test0.50");
     deleteVlan("test0.60");
