diff --git a/Makefile.am b/Makefile.am
index 33d8ac5..b1746be 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,7 +17,7 @@
 			    binaryblob.pb.cc \
 			    binarystore.cpp \
 			    sys.cpp \
-			    sys_file.cpp \
+			    sys_file_impl.cpp \
 			    handler.cpp
 
 libbinarystore_la_LDFLAGS = $(PHOSPHOR_LOGGING_LIBS) \
diff --git a/binarystore.hpp b/binarystore.hpp
index 9f95539..8185a8a 100644
--- a/binarystore.hpp
+++ b/binarystore.hpp
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "binarystore_interface.hpp"
 #include "sys_file.hpp"
 
 #include <unistd.h>
@@ -22,80 +23,6 @@
 {
 
 /**
- * @class BinaryStoreInterface is an abstraction for a storage location.
- *     Each instance would be uniquely identified by a baseId string.
- */
-class BinaryStoreInterface
-{
-  public:
-    virtual ~BinaryStoreInterface() = default;
-
-    /**
-     * @returns baseId string of the storage.
-     */
-    virtual std::string getBaseBlobId() const = 0;
-
-    /**
-     * @returns List of all open blob IDs, plus the base.
-     */
-    virtual std::vector<std::string> getBlobIds() const = 0;
-
-    /**
-     * Opens a blob given its name. If there is no one, create one.
-     * @param blobId: The blob id to operate on.
-     * @param flags: Either read flag or r/w flag has to be specified.
-     * @returns True if open/create successfully.
-     */
-    virtual bool openOrCreateBlob(const std::string& blobId,
-                                  uint16_t flags) = 0;
-
-    /**
-     * Deletes a blob given its name. If there is no one,
-     * @param blobId: The blob id to operate on.
-     * @returns True if deleted.
-     */
-    virtual bool deleteBlob(const std::string& blobId) = 0;
-
-    /**
-     * Reads data from the currently opened blob.
-     * @param offset: offset into the blob to read
-     * @param requestedSize: how many bytes to read
-     * @returns Bytes able to read. Returns empty if nothing can be read or
-     *          if there is no open blob.
-     */
-    virtual std::vector<uint8_t> read(uint32_t offset,
-                                      uint32_t requestedSize) = 0;
-
-    /**
-     * Writes data to the currently openend blob.
-     * @param offset: offset into the blob to write
-     * @param data: bytes to write
-     * @returns True if able to write the entire data successfully
-     */
-    virtual bool write(uint32_t offset, const std::vector<uint8_t>& data) = 0;
-
-    /**
-     * Commits data to the persistent storage specified during blob init.
-     * @returns True if able to write data to sysfile successfully
-     */
-    virtual bool commit() = 0;
-
-    /**
-     * Closes blob, which prevents further modifications. Uncommitted data will
-     * be lost.
-     * @returns True if able to close the blob successfully
-     */
-    virtual bool close() = 0;
-
-    /**
-     * Returns blob stat flags.
-     * @param meta: output stat flags.
-     * @returns True if able to get the stat flags and write to *meta
-     */
-    virtual bool stat(blobs::BlobMeta* meta) = 0;
-};
-
-/**
  * @class BinaryStore instantiates a concrete implementation of
  *     BinaryStoreInterface. The dependency on file is injected through its
  *     constructor.
diff --git a/binarystore_interface.hpp b/binarystore_interface.hpp
new file mode 100644
index 0000000..73ce17e
--- /dev/null
+++ b/binarystore_interface.hpp
@@ -0,0 +1,92 @@
+#pragma once
+
+#include <blobs-ipmid/blobs.hpp>
+#include <cstdint>
+#include <memory>
+#include <string>
+#include <vector>
+
+using std::size_t;
+using std::uint16_t;
+using std::uint32_t;
+using std::uint64_t;
+using std::uint8_t;
+
+namespace binstore
+{
+
+/**
+ * @class BinaryStoreInterface is an abstraction for a storage location.
+ *     Each instance would be uniquely identified by a baseId string.
+ */
+class BinaryStoreInterface
+{
+  public:
+    virtual ~BinaryStoreInterface() = default;
+
+    /**
+     * @returns baseId string of the storage.
+     */
+    virtual std::string getBaseBlobId() const = 0;
+
+    /**
+     * @returns List of all open blob IDs, plus the base.
+     */
+    virtual std::vector<std::string> getBlobIds() const = 0;
+
+    /**
+     * Opens a blob given its name. If there is no one, create one.
+     * @param blobId: The blob id to operate on.
+     * @param flags: Either read flag or r/w flag has to be specified.
+     * @returns True if open/create successfully.
+     */
+    virtual bool openOrCreateBlob(const std::string& blobId,
+                                  uint16_t flags) = 0;
+
+    /**
+     * Deletes a blob given its name. If there is no one,
+     * @param blobId: The blob id to operate on.
+     * @returns True if deleted.
+     */
+    virtual bool deleteBlob(const std::string& blobId) = 0;
+
+    /**
+     * Reads data from the currently opened blob.
+     * @param offset: offset into the blob to read
+     * @param requestedSize: how many bytes to read
+     * @returns Bytes able to read. Returns empty if nothing can be read or
+     *          if there is no open blob.
+     */
+    virtual std::vector<uint8_t> read(uint32_t offset,
+                                      uint32_t requestedSize) = 0;
+
+    /**
+     * Writes data to the currently openend blob.
+     * @param offset: offset into the blob to write
+     * @param data: bytes to write
+     * @returns True if able to write the entire data successfully
+     */
+    virtual bool write(uint32_t offset, const std::vector<uint8_t>& data) = 0;
+
+    /**
+     * Commits data to the persistent storage specified during blob init.
+     * @returns True if able to write data to sysfile successfully
+     */
+    virtual bool commit() = 0;
+
+    /**
+     * Closes blob, which prevents further modifications. Uncommitted data will
+     * be lost.
+     * @returns True if able to close the blob successfully
+     */
+    virtual bool close() = 0;
+
+    /**
+     * Returns blob stat flags.
+     * @param meta: output stat flags.
+     * @returns True if able to get the stat flags and write to *meta
+     */
+    virtual bool stat(blobs::BlobMeta* meta) = 0;
+};
+
+} // namespace binstore
diff --git a/binarystore_mock.hpp b/binarystore_mock.hpp
index 9fa83e6..34f14b8 100644
--- a/binarystore_mock.hpp
+++ b/binarystore_mock.hpp
@@ -1,8 +1,13 @@
 #pragma once
 
 #include "binarystore.hpp"
+#include "binarystore_interface.hpp"
 #include "sys_file.hpp"
 
+#include <memory>
+#include <string>
+#include <vector>
+
 #include <gmock/gmock.h>
 
 using ::testing::Invoke;
diff --git a/main.cpp b/main.cpp
index b5964b8..ac12fb9 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,6 @@
 #include "handler.hpp"
 #include "parse_config.hpp"
-#include "sys_file.hpp"
+#include "sys_file_impl.hpp"
 
 #include <blobs-ipmid/blobs.hpp>
 #include <exception>
diff --git a/sys_file.hpp b/sys_file.hpp
index 63110d2..a45f881 100644
--- a/sys_file.hpp
+++ b/sys_file.hpp
@@ -1,7 +1,5 @@
 #pragma once
 
-#include "sys.hpp"
-
 #include <fcntl.h>
 #include <unistd.h>
 
@@ -60,33 +58,4 @@
     virtual void writeStr(const std::string& data, size_t pos) = 0;
 };
 
-class SysFileImpl : public SysFile
-{
-  public:
-    /**
-     * @brief Constructs sysFile specified by path and offset
-     * @param path The file path
-     * @param offset The byte offset relatively. Reading a sysfile at position 0
-     *     actually reads underlying file at 'offset'
-     * @param sys Syscall operation interface
-     */
-    explicit SysFileImpl(const std::string& path, size_t offset = 0,
-                         const internal::Sys* sys = &internal::sys_impl);
-    ~SysFileImpl();
-    SysFileImpl() = delete;
-    SysFileImpl(const SysFileImpl&) = delete;
-    SysFileImpl& operator=(SysFileImpl) = delete;
-
-    size_t readToBuf(size_t pos, size_t count, char* buf) const override;
-    std::string readAsStr(size_t pos, size_t count) const override;
-    std::string readRemainingAsStr(size_t pos) const override;
-    void writeStr(const std::string& data, size_t pos) override;
-
-  private:
-    int fd_;
-    size_t offset_;
-    void lseek(size_t pos) const;
-    const internal::Sys* sys;
-};
-
 } // namespace binstore
diff --git a/sys_file.cpp b/sys_file_impl.cpp
similarity index 98%
rename from sys_file.cpp
rename to sys_file_impl.cpp
index 92d6c85..243d82d 100644
--- a/sys_file.cpp
+++ b/sys_file_impl.cpp
@@ -1,4 +1,4 @@
-#include "sys_file.hpp"
+#include "sys_file_impl.hpp"
 
 #include <system_error>
 
diff --git a/sys_file_impl.hpp b/sys_file_impl.hpp
new file mode 100644
index 0000000..c74c965
--- /dev/null
+++ b/sys_file_impl.hpp
@@ -0,0 +1,43 @@
+#pragma once
+
+#include "sys.hpp"
+#include "sys_file.hpp"
+
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <string>
+
+namespace binstore
+{
+
+class SysFileImpl : public SysFile
+{
+  public:
+    /**
+     * @brief Constructs sysFile specified by path and offset
+     * @param path The file path
+     * @param offset The byte offset relatively. Reading a sysfile at position 0
+     *     actually reads underlying file at 'offset'
+     * @param sys Syscall operation interface
+     */
+    explicit SysFileImpl(const std::string& path, size_t offset = 0,
+                         const internal::Sys* sys = &internal::sys_impl);
+    ~SysFileImpl();
+    SysFileImpl() = delete;
+    SysFileImpl(const SysFileImpl&) = delete;
+    SysFileImpl& operator=(SysFileImpl) = delete;
+
+    size_t readToBuf(size_t pos, size_t count, char* buf) const override;
+    std::string readAsStr(size_t pos, size_t count) const override;
+    std::string readRemainingAsStr(size_t pos) const override;
+    void writeStr(const std::string& data, size_t pos) override;
+
+  private:
+    int fd_;
+    size_t offset_;
+    void lseek(size_t pos) const;
+    const internal::Sys* sys;
+};
+
+} // namespace binstore
diff --git a/test/Makefile.am b/test/Makefile.am
index 08ef779..742e7e2 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -25,13 +25,13 @@
 parse_config_unittest_SOURCES = parse_config_unittest.cpp
 
 sys_file_unittest_SOURCES = sys_file_unittest.cpp
-sys_file_unittest_LDADD = $(top_builddir)/sys_file.o
+sys_file_unittest_LDADD = $(top_builddir)/sys_file_impl.o
 
 handler_unittest_SOURCES = handler_unittest.cpp
 handler_unittest_LDADD = $(PHOSPHOR_LOGGING_LIBS) \
 	$(top_builddir)/handler.o \
 	$(top_builddir)/binarystore.o \
-	$(top_builddir)/sys_file.o \
+	$(top_builddir)/sys_file_impl.o \
 	$(top_builddir)/libbinarystore_la-binaryblob.pb.o \
 	-lprotobuf
 handler_unittest_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
@@ -40,7 +40,7 @@
 handler_commit_unittest_LDADD = $(PHOSPHOR_LOGGING_LIBS) \
 	$(top_builddir)/handler.o \
 	$(top_builddir)/binarystore.o \
-	$(top_builddir)/sys_file.o \
+	$(top_builddir)/sys_file_impl.o \
 	$(top_builddir)/libbinarystore_la-binaryblob.pb.o \
 	-lprotobuf
 handler_commit_unittest_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
@@ -49,7 +49,7 @@
 handler_stat_unittest_LDADD = $(PHOSPHOR_LOGGING_LIBS) \
 	$(top_builddir)/handler.o \
 	$(top_builddir)/binarystore.o \
-	$(top_builddir)/sys_file.o \
+	$(top_builddir)/sys_file_impl.o \
 	$(top_builddir)/libbinarystore_la-binaryblob.pb.o \
 	-lprotobuf
 handler_stat_unittest_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
@@ -58,7 +58,7 @@
 handler_open_unittest_LDADD = $(PHOSPHOR_LOGGING_LIBS) \
 	$(top_builddir)/handler.o \
 	$(top_builddir)/binarystore.o \
-	$(top_builddir)/sys_file.o \
+	$(top_builddir)/sys_file_impl.o \
 	$(top_builddir)/libbinarystore_la-binaryblob.pb.o \
 	-lprotobuf
 handler_open_unittest_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
@@ -67,7 +67,7 @@
 handler_readwrite_unittest_LDADD = $(PHOSPHOR_LOGGING_LIBS) \
 	$(top_builddir)/handler.o \
 	$(top_builddir)/binarystore.o \
-	$(top_builddir)/sys_file.o \
+	$(top_builddir)/sys_file_impl.o \
 	$(top_builddir)/libbinarystore_la-binaryblob.pb.o \
 	-lprotobuf
 handler_readwrite_unittest_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
diff --git a/test/sys_file_unittest.cpp b/test/sys_file_unittest.cpp
index f4035cf..f66cefd 100644
--- a/test/sys_file_unittest.cpp
+++ b/test/sys_file_unittest.cpp
@@ -1,4 +1,4 @@
-#include "sys_file.hpp"
+#include "sys_file_impl.hpp"
 #include "sys_mock.hpp"
 
 #include <fcntl.h>
