diff --git a/ndn-cpp/encoding/WireFormat.hpp b/ndn-cpp/encoding/WireFormat.hpp
index a7d62bc..7eb9b31 100644
--- a/ndn-cpp/encoding/WireFormat.hpp
+++ b/ndn-cpp/encoding/WireFormat.hpp
@@ -21,6 +21,42 @@
 
   virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeData(const Data &data);
   virtual void decodeData(Data &data, const unsigned char *input, unsigned int inputLength);
+  
+  /**
+   * Set the static default WireFormat used by default encoding and decoding methods.
+   * @param wireFormat A Pointer to a object of a subclass of WireFormat.  This does not make a copy and
+   * the caller must ensure that the object remains allocated.
+   */
+  static void setDefaultWireFormat(WireFormat *wireFormat) 
+  {
+    defaultWireFormat_ = wireFormat;
+  }
+  
+  /**
+   * Return the default WireFormat used by default encoding and decoding methods which was set with
+   * setDefaultWireFormat.
+   * @return A pointer to the WireFormat object.
+   */
+  static WireFormat *getDefaultWireFormat() 
+  {
+    return defaultWireFormat_;
+  }
+  
+private:
+  /**
+   * This is implemented by only one of the subclasses of WireFormat to return a new object used
+   * as the initial value for the default WireFormat.  If the application doesn't include that class, then the application
+   * needs to include another subclass which defines WireFormat::newInitialDefaultWireFormat.
+   * @return a new object, which is held by a shared_ptr and freed when the application exits.
+   */
+  static WireFormat *newInitialDefaultWireFormat();
+  
+  /**
+   * Hold the result of newInitialDefaultWireFormat in this shared_ptr which is freed when the application exits.
+   */
+  static ptr_lib::shared_ptr<WireFormat> initialDefaultWireFormat_;
+  
+  static WireFormat *defaultWireFormat_;
 };
 
 }
