diff --git a/src/vpp-api/vom/tap_interface.hpp b/src/vpp-api/vom/tap_interface.hpp
index af90b7b..08dba50 100644
--- a/src/vpp-api/vom/tap_interface.hpp
+++ b/src/vpp-api/vom/tap_interface.hpp
@@ -42,75 +42,6 @@
    */
   std::shared_ptr<tap_interface> singular() const;
 
-  /**
-   * A functor class that creates an interface
-   */
-  class create_cmd : public interface::create_cmd<vapi::Tap_connect>
-  {
-  public:
-    create_cmd(HW::item<handle_t>& item,
-               const std::string& name,
-               route::prefix_t& prefix,
-               const l2_address_t& l2_address);
-
-    /**
-     * Issue the command to VPP/HW
-     */
-    rc_t issue(connection& con);
-    /**
-     * convert to string format for debug purposes
-     */
-    std::string to_string() const;
-
-  private:
-    route::prefix_t& m_prefix;
-    const l2_address_t& m_l2_address;
-  };
-
-  /**
-   *
-   */
-  class delete_cmd : public interface::delete_cmd<vapi::Tap_delete>
-  {
-  public:
-    delete_cmd(HW::item<handle_t>& item);
-
-    /**
-     * Issue the command to VPP/HW
-     */
-    rc_t issue(connection& con);
-    /**
-     * convert to string format for debug purposes
-     */
-    std::string to_string() const;
-  };
-
-  /**
-   * A cmd class that Dumps all the Vpp Interfaces
-   */
-  class dump_cmd : public VOM::dump_cmd<vapi::Sw_interface_tap_dump>
-  {
-  public:
-    /**
-     * Default Constructor
-     */
-    dump_cmd();
-
-    /**
-     * Issue the command to VPP/HW
-     */
-    rc_t issue(connection& con);
-    /**
-     * convert to string format for debug purposes
-     */
-    std::string to_string() const;
-
-    /**
-     * Comparison operator - only used for UT
-     */
-    bool operator==(const dump_cmd& i) const;
-  };
-
 private:
   /**
    * Class definition for listeners to OM events
@@ -151,6 +82,8 @@
                 admin_state_t state,
                 route::prefix_t prefix);
 
+  friend class interface_factory;
+
   /**
    * Ip Prefix
    */
