diff --git a/daemon/face/websocket-factory.hpp b/daemon/face/websocket-factory.hpp
index 110c026..1f784b7 100644
--- a/daemon/face/websocket-factory.hpp
+++ b/daemon/face/websocket-factory.hpp
@@ -35,19 +35,6 @@
 {
 public:
   /**
-   * \brief Exception of WebSocketFactory
-   */
-  class Error : public ProtocolFactory::Error
-  {
-  public:
-    explicit
-    Error(const std::string& what)
-      : ProtocolFactory::Error(what)
-    {
-    }
-  };
-
-  /**
    * \brief Create WebSocket-based channel using websocket::Endpoint
    *
    * websocket::Endpoint is really an alias for boost::asio::ip::tcp::endpoint.
@@ -58,8 +45,6 @@
    *
    * \returns always a valid pointer to a WebSocketChannel object, an exception
    *          is thrown if it cannot be created.
-   *
-   * \throws WebSocketFactory::Error
    */
   shared_ptr<WebSocketChannel>
   createChannel(const websocket::Endpoint& localEndpoint);
@@ -69,8 +54,6 @@
    *
    * This method is just a helper that converts a string representation of localIp and port to
    * websocket::Endpoint and calls the other createChannel overload.
-   *
-   * \throws WebSocketFactory::Error
    */
   shared_ptr<WebSocketChannel>
   createChannel(const std::string& localIp, const std::string& localPort);
@@ -79,8 +62,9 @@
   virtual void
   createFace(const FaceUri& uri,
              ndn::nfd::FacePersistency persistency,
+             bool wantLocalFieldsEnabled,
              const FaceCreatedCallback& onCreated,
-             const FaceCreationFailedCallback& onConnectFailed) override;
+             const FaceCreationFailedCallback& onFailure) override;
 
   virtual std::vector<shared_ptr<const Channel>>
   getChannels() const override;
