diff --git a/tools/i2c/i2c.hpp b/tools/i2c/i2c.hpp
new file mode 100644
index 0000000..f9cc09e
--- /dev/null
+++ b/tools/i2c/i2c.hpp
@@ -0,0 +1,57 @@
+#pragma once
+
+#include "i2c_interface.hpp"
+
+namespace i2c
+{
+
+class I2CDevice : public I2CInterface
+{
+  private:
+    I2CDevice() = delete;
+
+    explicit I2CDevice(uint8_t busId, uint8_t devAddr)
+    {
+        // TODO
+        (void)busId;
+        (void)devAddr;
+    }
+
+  public:
+    virtual ~I2CDevice() = default;
+
+    /** @copydoc I2CInterface::read(uint8_t&) */
+    void read(uint8_t& data) override;
+
+    /** @copydoc I2CInterface::read(uint8_t,uint8_t&) */
+    void read(uint8_t addr, uint8_t& data) override;
+
+    /** @copydoc I2CInterface::read(uint8_t,uint16_t&) */
+    void read(uint8_t addr, uint16_t& data) override;
+
+    /** @copydoc I2CInterface::read(uint8_t,uint8_t&,uint8_t*) */
+    void read(uint8_t addr, uint8_t& size, uint8_t* data) override;
+
+    /** @copydoc I2CInterface::write(uint8_t) */
+    void write(uint8_t data) override;
+
+    /** @copydoc I2CInterface::write(uint8_t,uint8_t) */
+    void write(uint8_t addr, uint8_t data) override;
+
+    /** @copydoc I2CInterface::write(uint8_t,uint16_t) */
+    void write(uint8_t addr, uint16_t data) override;
+
+    /** @copydoc I2CInterface::write(uint8_t,uint8_t,const uint8_t*) */
+    void write(uint8_t addr, uint8_t size, const uint8_t* data) override;
+
+    /** @brief Create an I2CInterface instance
+     *
+     * @param[in] busId - The i2c bus ID
+     * @param[in] devAddr - The device address of the i2c
+     *
+     * @return The unique_ptr holding the I2CInterface
+     */
+    static std::unique_ptr<I2CInterface> create(uint8_t busId, uint8_t devAddr);
+};
+
+} // namespace i2c
