diff --git a/test/ipz_parser/parser.cpp b/test/ipz_parser/parser.cpp
index 40c60e9..c9ec93b 100644
--- a/test/ipz_parser/parser.cpp
+++ b/test/ipz_parser/parser.cpp
@@ -1,9 +1,10 @@
+#include "ipz_parser.hpp"
+
 #include <cassert>
 #include <defines.hpp>
 #include <fstream>
 #include <impl.hpp>
 #include <iterator>
-#include <parser.hpp>
 #include <store.hpp>
 
 #include <gtest/gtest.h>
diff --git a/test/keyword_vpd_parser_test/kw_vpd_test.cpp b/test/keyword_vpd_parser_test/kw_vpd_test.cpp
index 115d60a..48c3961 100644
--- a/test/keyword_vpd_parser_test/kw_vpd_test.cpp
+++ b/test/keyword_vpd_parser_test/kw_vpd_test.cpp
@@ -1,4 +1,5 @@
 #include "keyword_vpd_parser.hpp"
+#include "store.hpp"
 #include "types.hpp"
 
 #include <exception>
@@ -9,6 +10,7 @@
 using namespace vpd::keyword::parser;
 using namespace openpower::vpd;
 using namespace openpower::vpd::inventory;
+using namespace std;
 
 class KeywordVpdParserTest : public ::testing::Test
 {
@@ -59,7 +61,7 @@
           0x34}},
         {"CC", {0x32, 0x44, 0x33, 0x37}}};
 
-    auto map2 = parserObj1.parseKwVpd();
+    auto map2 = std::move(get<KeywordVpdMap>(parserObj1.parse()));
     ASSERT_EQ(1, map1 == map2);
 
     // BONO TYPE VPD
@@ -81,7 +83,7 @@
             {"Z5", {0x30}},
             {"Z6", {0x41, 0x31, 0x38, 0x30, 0x30, 0x32, 0x30, 0x30}}};
 
-    map2 = parserObj2.parseKwVpd();
+    map2 = std::move(get<KeywordVpdMap>(parserObj2.parse()));
     ASSERT_EQ(1, map1 == map2);
 }
 
@@ -90,12 +92,12 @@
     // Invalid Large resource type Identifier String - corrupted at index[0]
     keywordVpdVector[0] = 0x83;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // For BONO type VPD
     bonoKwVpdVector[0] = 0x83;
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, InvKwValTag)
@@ -103,12 +105,12 @@
     // Invalid Large resource type Vendor Defined - corrupted at index[19]
     keywordVpdVector[19] = 0x85;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // For BONO type VPD - corruputed at index[33]
     bonoKwVpdVector[33] = 0x91;
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, InvKwValSize)
@@ -116,12 +118,12 @@
     // Badly formed keyword VPD data - corrupted at index[20]
     keywordVpdVector[20] = 0x00;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // For BONO type VPD - corruputed at index[34]
     bonoKwVpdVector[34] = 0x00;
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, InvKwValEndTag)
@@ -129,7 +131,7 @@
     // Invalid Small resource type End - corrupted at index[177]
     keywordVpdVector[177] = 0x80;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, InvChecksum)
@@ -137,7 +139,7 @@
     // Invalid Check sum - corrupted at index[178]
     keywordVpdVector[178] = 0xb1;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, InvKwVpdEndTag)
@@ -145,12 +147,12 @@
     // Invalid Small resource type Last End Of Data - corrupted at index[179]
     keywordVpdVector[179] = 0x79;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // For BONO type VPD - corrupted at index[147]
     bonoKwVpdVector[147] = 0x79;
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, OutOfBoundGreaterSize)
@@ -159,12 +161,12 @@
     // at index[24]
     keywordVpdVector[24] = 0x32;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // For BONO type VPD - corrupted at index[38]
     bonoKwVpdVector[38] = 0x4D;
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, OutOfBoundLesserSize)
@@ -173,12 +175,12 @@
     // at index[24]
     keywordVpdVector[24] = 0x03;
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // For BONO type VPD - corrupted at index[38]
     bonoKwVpdVector[38] = 0x04;
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 TEST_F(KeywordVpdParserTest, BlankVpd)
@@ -186,12 +188,12 @@
     // Blank Kw Vpd
     keywordVpdVector.clear();
     KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
 
     // Blank Bono Type Vpd
     bonoKwVpdVector.clear();
     KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parseKwVpd(), std::runtime_error);
+    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
 }
 
 int main(int argc, char** argv)
diff --git a/test/meson.build b/test/meson.build
index 3f144b9..97b5e1c 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -15,7 +15,7 @@
 gtest = dependency('gtest', main: true, disabler: true, required: build_tests)
 dependecy_list = [gtest, gmock, sdbusplus, phosphor_logging, phosphor_dbus_interfaces]
 
-configuration_inc = include_directories('..', '../vpd-manager', 'vpd-manager-test')
+configuration_inc = include_directories('..', '../vpd-manager', 'vpd-manager-test', '../vpd-parser')
 
 vpd_test = ['store/store.cpp',
             'ipz_parser/parser.cpp',
@@ -27,11 +27,13 @@
 application_src =['../impl.cpp',
                    '../vpdecc/vpdecc.c',
                    '../vpdecc/vpdecc_support.c',
-                   '../parser.cpp',
+                   '../vpd-parser/ipz_parser.cpp',
                    '../utils.cpp',
                    '../vpd-manager/reader_impl.cpp',
-                   '../keyword_vpd_parser.cpp',
-                   '../vpd-manager/editor_impl.cpp'
+                   '../vpd-parser/keyword_vpd_parser.cpp',
+                   '../vpd-manager/editor_impl.cpp',
+                   '../vpd-parser/parser_factory.cpp',
+                   '../vpd-parser/memory_vpd_parser.cpp'
                   ]
 
 foreach t : vpd_test
diff --git a/test/parser/parser.cpp b/test/parser/parser.cpp
index 139c4f2..57da82f 100644
--- a/test/parser/parser.cpp
+++ b/test/parser/parser.cpp
@@ -2,20 +2,21 @@
 #include <defines.hpp>
 #include <fstream>
 #include <iterator>
-#include <parser.hpp>
 #include <store.hpp>
+#include <vpd-parser/ipz_parser.hpp>
 
 void runTests()
 {
     using namespace openpower::vpd;
-
+    using namespace openpower::vpd::ipz::parser;
     // Test parse() API
     {
         std::ifstream vpdFile("test.vpd", std::ios::binary);
         Binary vpd((std::istreambuf_iterator<char>(vpdFile)),
                    std::istreambuf_iterator<char>());
 
-        auto vpdStore = parse(std::move(vpd));
+        IpzVpdParser ipzParser(std::move(vpd));
+        auto vpdStore = std::move(std::get<Store>(ipzParser.parse()));
 
         assert(("P012" == vpdStore.get<Record::VINI, record::Keyword::CC>()));
         assert(("2019-01-01-08:30:00" ==
diff --git a/test/vpd-manager-test/editor_test.cpp b/test/vpd-manager-test/editor_test.cpp
index c1e98b6..2f7114a 100644
--- a/test/vpd-manager-test/editor_test.cpp
+++ b/test/vpd-manager-test/editor_test.cpp
@@ -1,5 +1,5 @@
 #include "editor_impl.hpp"
-#include "parser.hpp"
+#include "ipz_parser.hpp"
 
 #include <algorithm>
 #include <nlohmann/json.hpp>
