diff --git a/src/file-manifest.cpp b/src/file-manifest.cpp
index 7352699..fe4fec8 100644
--- a/src/file-manifest.cpp
+++ b/src/file-manifest.cpp
@@ -42,13 +42,6 @@
   this->decodeContent();
 }
 
-const Block&
-FileManifest::wireEncode()
-{
-  encodeContent();
-  return Data::wireEncode();
-}
-
 template<ndn::encoding::Tag TAG>
 size_t
 FileManifest::encodeContent(ndn::EncodingImpl<TAG>& encoder) const {
@@ -126,6 +119,12 @@
   return true;
 }
 
+void
+FileManifest::finalize() {
+  m_catalog.shrink_to_fit();
+  encodeContent();
+}
+
 void FileManifest::encodeContent() {
   // Name
   //     <file_name>/ImplicitDigest
diff --git a/src/file-manifest.hpp b/src/file-manifest.hpp
index 0a46574..6ce957e 100644
--- a/src/file-manifest.hpp
+++ b/src/file-manifest.hpp
@@ -144,9 +144,15 @@
   * @param wire the write to be decoded
   * @throws Error if decoding fails
   */
-  const Block&
-  wireEncode();
-  /// Encodes this FileManifest into the wire format and returns a Block with the contents
+
+  void
+  finalize();
+  /*
+   * \brief Performs all final processing on this manifest
+   *
+   * This method should be called once this manifest is populated and *must* be called before
+   * signing it or  calling wireEncode().
+   */
 
 private:
   void
@@ -204,6 +210,11 @@
 
 inline
 FileManifest::FileManifest(const Block& block)
+: Data()
+, m_dataPacketSize(0)
+, m_catalogPrefix("")
+, m_catalog()
+, m_submanifestPtr(nullptr)
 {
   wireDecode(block);
 }
diff --git a/tests/unit-tests/file-manifest.t.cpp b/tests/unit-tests/file-manifest.t.cpp
index 4bc69bd..a8181ad 100644
--- a/tests/unit-tests/file-manifest.t.cpp
+++ b/tests/unit-tests/file-manifest.t.cpp
@@ -270,19 +270,21 @@
                   std::make_shared<Name>("/file0/1/5E6F7G8H"));
 
   KeyChain keyChain;
+  m1.finalize();
   keyChain.sign(m1);
   BOOST_CHECK_EQUAL(m1, FileManifest(m1.wireEncode()));
 
   // Change value and be sure that wireEncoding still works
   m1.remove("/foo/2/CAFEBABE");
+  m1.finalize();
   keyChain.sign(m1);
-
   BOOST_CHECK_EQUAL(m1, FileManifest(m1.wireEncode()));
 
   // Explicitly call wireEncode and ensure the value works
   FileManifest m2 = m1;
   m1.remove("/foo/0/ABC123");
   keyChain.sign(m1);
+  m1.finalize();
   m2.wireDecode(m1.wireEncode());
   BOOST_CHECK_EQUAL(m1, m2);
 }
