prettier documentation
diff --git a/src/client.rs b/src/client.rs
index 18a4e8e..06670dc 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -572,8 +572,7 @@
 /// `ConfigBuilder` and set your own values.
 ///
 /// ```
-/// use tuf::client::Config;
-///
+/// # use tuf::client::Config;
 /// let config = Config::default();
 /// assert_eq!(config.max_root_size(), &Some(1024 * 1024));
 /// assert_eq!(config.max_timestamp_size(), &Some(32 * 1024));
diff --git a/src/interchange/mod.rs b/src/interchange/mod.rs
index b1ba409..f4f751c 100644
--- a/src/interchange/mod.rs
+++ b/src/interchange/mod.rs
@@ -222,8 +222,7 @@
     type RawData = json::Value;
 
     /// ```
-    /// use tuf::interchange::{DataInterchange, Json};
-    ///
+    /// # use tuf::interchange::{DataInterchange, Json};
     /// assert_eq!(Json::extension(), "json");
     /// ```
     fn extension() -> &'static str {
@@ -231,9 +230,8 @@
     }
 
     /// ```
-    /// use tuf::interchange::{DataInterchange, Json};
-    /// use std::collections::HashMap;
-    ///
+    /// # use tuf::interchange::{DataInterchange, Json};
+    /// # use std::collections::HashMap;
     /// let jsn: &[u8] = br#"{"foo": "bar", "baz": "quux"}"#;
     /// let raw = Json::from_reader(jsn).unwrap();
     /// let out = Json::canonicalize(&raw).unwrap();
@@ -244,27 +242,26 @@
     }
 
     /// ```
-    /// #[macro_use]
-    /// extern crate serde_derive;
-    /// #[macro_use]
-    /// extern crate serde_json;
-    /// extern crate tuf;
-    ///
-    /// use tuf::interchange::{DataInterchange, Json};
-    /// use std::collections::HashMap;
-    ///
+    /// # #[macro_use]
+    /// # extern crate serde_derive;
+    /// # #[macro_use]
+    /// # extern crate serde_json;
+    /// # extern crate tuf;
+    /// # use tuf::interchange::{DataInterchange, Json};
+    /// # use std::collections::HashMap;
+    /// #
     /// #[derive(Deserialize, Debug, PartialEq)]
     /// struct Thing {
     ///    foo: String,
     ///    bar: String,
     /// }
     ///
-    /// fn main() {
-    ///     let jsn = json!({"foo": "wat", "bar": "lol"});
-    ///     let thing = Thing { foo: "wat".into(), bar: "lol".into() };
-    ///     let de: Thing = Json::deserialize(&jsn).unwrap();
-    ///     assert_eq!(de, thing);
-    /// }
+    /// # fn main() {
+    /// let jsn = json!({"foo": "wat", "bar": "lol"});
+    /// let thing = Thing { foo: "wat".into(), bar: "lol".into() };
+    /// let de: Thing = Json::deserialize(&jsn).unwrap();
+    /// assert_eq!(de, thing);
+    /// # }
     /// ```
     fn deserialize<T>(raw_data: &Self::RawData) -> Result<T>
     where
@@ -274,27 +271,26 @@
     }
 
     /// ```
-    /// #[macro_use]
-    /// extern crate serde_derive;
-    /// #[macro_use]
-    /// extern crate serde_json;
-    /// extern crate tuf;
-    ///
-    /// use tuf::interchange::{DataInterchange, Json};
-    /// use std::collections::HashMap;
-    ///
+    /// # #[macro_use]
+    /// # extern crate serde_derive;
+    /// # #[macro_use]
+    /// # extern crate serde_json;
+    /// # extern crate tuf;
+    /// # use tuf::interchange::{DataInterchange, Json};
+    /// # use std::collections::HashMap;
+    /// #
     /// #[derive(Serialize)]
     /// struct Thing {
     ///    foo: String,
     ///    bar: String,
     /// }
     ///
-    /// fn main() {
-    ///     let jsn = json!({"foo": "wat", "bar": "lol"});
-    ///     let thing = Thing { foo: "wat".into(), bar: "lol".into() };
-    ///     let se: serde_json::Value = Json::serialize(&thing).unwrap();
-    ///     assert_eq!(se, jsn);
-    /// }
+    /// # fn main() {
+    /// let jsn = json!({"foo": "wat", "bar": "lol"});
+    /// let thing = Thing { foo: "wat".into(), bar: "lol".into() };
+    /// let se: serde_json::Value = Json::serialize(&thing).unwrap();
+    /// assert_eq!(se, jsn);
+    /// # }
     /// ```
     fn serialize<T>(data: &T) -> Result<Self::RawData>
     where
@@ -304,8 +300,7 @@
     }
 
     /// ```
-    /// use tuf::interchange::{DataInterchange, Json};
-    ///
+    /// # use tuf::interchange::{DataInterchange, Json};
     /// let arr = vec![1, 2, 3];
     /// let mut buf = Vec::new();
     /// Json::to_writer(&mut buf, &arr).unwrap();
@@ -322,9 +317,8 @@
     }
 
     /// ```
-    /// use tuf::interchange::{DataInterchange, Json};
-    /// use std::collections::HashMap;
-    ///
+    /// # use tuf::interchange::{DataInterchange, Json};
+    /// # use std::collections::HashMap;
     /// let jsn: &[u8] = br#"{"foo": "bar", "baz": "quux"}"#;
     /// let _: HashMap<String, String> = Json::from_reader(jsn).unwrap();
     /// ```
diff --git a/src/lib.rs b/src/lib.rs
index 388fcfb..5b4d31f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -76,14 +76,14 @@
 //! The top-level targets role delegates to three other roles and are listed in the following order:
 //!
 //! 1. `claimed-projects`
-//!   - `terminating: true`
+//!   - Terminating
 //!   - Delegates to project-specific roles that have registered keys with TUF
 //! 2. `rarely-updated-projects`
-//!   - `terminating: true`
+//!   - Terminating
 //!   - Signs all packages for all projects that have been "abandoned" or left unupdated for a long
 //!   time AND have not yet registered keys with TUF
 //! 3. `new-projects`
-//!   - `terminating: false`
+//!   - Non-terminating
 //!   - Signs all packages for all new projects as well as projects that were relegated to
 //!   `rarely-updated-projects`
 //!
diff --git a/src/metadata.rs b/src/metadata.rs
index b8420e1..ac6e9a7 100644
--- a/src/metadata.rs
+++ b/src/metadata.rs
@@ -242,27 +242,27 @@
     /// bytes of the provided metadata with the provided scheme.
     ///
     /// ```
-    /// extern crate chrono;
-    /// extern crate tuf;
+    /// # extern crate chrono;
+    /// # extern crate tuf;
+    /// #
+    /// # use chrono::prelude::*;
+    /// # use tuf::crypto::{PrivateKey, SignatureScheme, HashAlgorithm};
+    /// # use tuf::interchange::Json;
+    /// # use tuf::metadata::{MetadataDescription, TimestampMetadata, SignedMetadata};
+    /// #
+    /// # fn main() {
+    /// # let key: &[u8] = include_bytes!("../tests/ed25519/ed25519-1.pk8.der");
+    /// let key = PrivateKey::from_pkcs8(&key, SignatureScheme::Ed25519).unwrap();
     ///
-    /// use chrono::prelude::*;
-    /// use tuf::crypto::{PrivateKey, SignatureScheme, HashAlgorithm};
-    /// use tuf::interchange::Json;
-    /// use tuf::metadata::{MetadataDescription, TimestampMetadata, SignedMetadata};
+    /// let timestamp = TimestampMetadata::new(
+    ///     1,
+    ///     Utc.ymd(2017, 1, 1).and_hms(0, 0, 0),
+    ///     MetadataDescription::from_reader(&*vec![0x01, 0x02, 0x03], 1,
+    ///         &[HashAlgorithm::Sha256]).unwrap()
+    /// ).unwrap();
     ///
-    /// fn main() {
-    ///     let key: &[u8] = include_bytes!("../tests/ed25519/ed25519-1.pk8.der");
-    ///     let key = PrivateKey::from_pkcs8(&key, SignatureScheme::Ed25519).unwrap();
-    ///
-    ///     let timestamp = TimestampMetadata::new(
-    ///         1,
-    ///         Utc.ymd(2017, 1, 1).and_hms(0, 0, 0),
-    ///         MetadataDescription::from_reader(&*vec![0x01, 0x02, 0x03], 1,
-    ///             &[HashAlgorithm::Sha256]).unwrap()
-    ///     ).unwrap();
-    ///
-    ///     SignedMetadata::<Json, TimestampMetadata>::new(&timestamp, &key).unwrap();
-    /// }
+    /// SignedMetadata::<Json, TimestampMetadata>::new(&timestamp, &key).unwrap();
+    /// # }
     /// ```
     pub fn new(
         metadata: &M,
@@ -288,38 +288,38 @@
     /// to perform the "append" operations.
     ///
     /// ```
-    /// extern crate chrono;
-    /// extern crate tuf;
+    /// # extern crate chrono;
+    /// # extern crate tuf;
+    /// #
+    /// # use chrono::prelude::*;
+    /// # use tuf::crypto::{PrivateKey, SignatureScheme, HashAlgorithm};
+    /// # use tuf::interchange::Json;
+    /// # use tuf::metadata::{MetadataDescription, TimestampMetadata, SignedMetadata};
+    /// #
+    /// # fn main() {
+    /// let key_1: &[u8] = include_bytes!("../tests/ed25519/ed25519-1.pk8.der");
+    /// let key_1 = PrivateKey::from_pkcs8(&key_1, SignatureScheme::Ed25519).unwrap();
     ///
-    /// use chrono::prelude::*;
-    /// use tuf::crypto::{PrivateKey, SignatureScheme, HashAlgorithm};
-    /// use tuf::interchange::Json;
-    /// use tuf::metadata::{MetadataDescription, TimestampMetadata, SignedMetadata};
+    /// // Note: This is for demonstration purposes only.
+    /// // You should never have multiple private keys on the same device.
+    /// let key_2: &[u8] = include_bytes!("../tests/ed25519/ed25519-2.pk8.der");
+    /// let key_2 = PrivateKey::from_pkcs8(&key_2, SignatureScheme::Ed25519).unwrap();
     ///
-    /// fn main() {
-    ///     let key_1: &[u8] = include_bytes!("../tests/ed25519/ed25519-1.pk8.der");
-    ///     let key_1 = PrivateKey::from_pkcs8(&key_1, SignatureScheme::Ed25519).unwrap();
+    /// let timestamp = TimestampMetadata::new(
+    ///     1,
+    ///     Utc.ymd(2017, 1, 1).and_hms(0, 0, 0),
+    ///     MetadataDescription::from_reader(&*vec![0x01, 0x02, 0x03], 1,
+    ///         &[HashAlgorithm::Sha256]).unwrap()
+    /// ).unwrap();
+    /// let mut timestamp = SignedMetadata::<Json, TimestampMetadata>::new(
+    ///     &timestamp, &key_1).unwrap();
     ///
-    ///     // Note: This is for demonstration purposes only.
-    ///     // You should never have multiple private keys on the same device.
-    ///     let key_2: &[u8] = include_bytes!("../tests/ed25519/ed25519-2.pk8.der");
-    ///     let key_2 = PrivateKey::from_pkcs8(&key_2, SignatureScheme::Ed25519).unwrap();
+    /// timestamp.add_signature(&key_2).unwrap();
+    /// assert_eq!(timestamp.signatures().len(), 2);
     ///
-    ///     let timestamp = TimestampMetadata::new(
-    ///         1,
-    ///         Utc.ymd(2017, 1, 1).and_hms(0, 0, 0),
-    ///         MetadataDescription::from_reader(&*vec![0x01, 0x02, 0x03], 1,
-    ///             &[HashAlgorithm::Sha256]).unwrap()
-    ///     ).unwrap();
-    ///     let mut timestamp = SignedMetadata::<Json, TimestampMetadata>::new(
-    ///         &timestamp, &key_1).unwrap();
-    ///
-    ///     timestamp.add_signature(&key_2).unwrap();
-    ///     assert_eq!(timestamp.signatures().len(), 2);
-    ///
-    ///     timestamp.add_signature(&key_2).unwrap();
-    ///     assert_eq!(timestamp.signatures().len(), 2);
-    /// }
+    /// timestamp.add_signature(&key_2).unwrap();
+    /// assert_eq!(timestamp.signatures().len(), 2);
+    /// # }
     /// ```
     pub fn add_signature(
         &mut self,
@@ -379,55 +379,55 @@
     /// Verify this metadata.
     ///
     /// ```
-    /// extern crate chrono;
-    /// #[macro_use]
-    /// extern crate maplit;
-    /// extern crate tuf;
+    /// # extern crate chrono;
+    /// # #[macro_use]
+    /// # extern crate maplit;
+    /// # extern crate tuf;
     ///
-    /// use chrono::prelude::*;
-    /// use tuf::crypto::{PrivateKey, SignatureScheme, HashAlgorithm};
-    /// use tuf::interchange::Json;
-    /// use tuf::metadata::{MetadataDescription, TimestampMetadata, SignedMetadata};
+    /// # use chrono::prelude::*;
+    /// # use tuf::crypto::{PrivateKey, SignatureScheme, HashAlgorithm};
+    /// # use tuf::interchange::Json;
+    /// # use tuf::metadata::{MetadataDescription, TimestampMetadata, SignedMetadata};
     ///
-    /// fn main() {
-    ///     let key_1: &[u8] = include_bytes!("../tests/ed25519/ed25519-1.pk8.der");
-    ///     let key_1 = PrivateKey::from_pkcs8(&key_1, SignatureScheme::Ed25519).unwrap();
+    /// # fn main() {
+    /// let key_1: &[u8] = include_bytes!("../tests/ed25519/ed25519-1.pk8.der");
+    /// let key_1 = PrivateKey::from_pkcs8(&key_1, SignatureScheme::Ed25519).unwrap();
     ///
-    ///     let key_2: &[u8] = include_bytes!("../tests/ed25519/ed25519-2.pk8.der");
-    ///     let key_2 = PrivateKey::from_pkcs8(&key_2, SignatureScheme::Ed25519).unwrap();
+    /// let key_2: &[u8] = include_bytes!("../tests/ed25519/ed25519-2.pk8.der");
+    /// let key_2 = PrivateKey::from_pkcs8(&key_2, SignatureScheme::Ed25519).unwrap();
     ///
-    ///     let timestamp = TimestampMetadata::new(
-    ///         1,
-    ///         Utc.ymd(2017, 1, 1).and_hms(0, 0, 0),
-    ///         MetadataDescription::from_reader(&*vec![0x01, 0x02, 0x03], 1,
-    ///             &[HashAlgorithm::Sha256]).unwrap()
-    ///     ).unwrap();
-    ///     let timestamp = SignedMetadata::<Json, TimestampMetadata>::new(
-    ///         &timestamp, &key_1).unwrap();
+    /// let timestamp = TimestampMetadata::new(
+    ///     1,
+    ///     Utc.ymd(2017, 1, 1).and_hms(0, 0, 0),
+    ///     MetadataDescription::from_reader(&*vec![0x01, 0x02, 0x03], 1,
+    ///         &[HashAlgorithm::Sha256]).unwrap()
+    /// ).unwrap();
+    /// let timestamp = SignedMetadata::<Json, TimestampMetadata>::new(
+    ///     &timestamp, &key_1).unwrap();
     ///
-    ///     assert!(timestamp.verify(
-    ///         1,
-    ///         vec![key_1.public()],
-    ///     ).is_ok());
+    /// assert!(timestamp.verify(
+    ///     1,
+    ///     vec![key_1.public()],
+    /// ).is_ok());
     ///
-    ///     // fail with increased threshold
-    ///     assert!(timestamp.verify(
-    ///         2,
-    ///         vec![key_1.public()],
-    ///     ).is_err());
+    /// // fail with increased threshold
+    /// assert!(timestamp.verify(
+    ///     2,
+    ///     vec![key_1.public()],
+    /// ).is_err());
     ///
-    ///     // fail when the keys aren't authorized
-    ///     assert!(timestamp.verify(
-    ///         1,
-    ///         vec![key_2.public()],
-    ///     ).is_err());
+    /// // fail when the keys aren't authorized
+    /// assert!(timestamp.verify(
+    ///     1,
+    ///     vec![key_2.public()],
+    /// ).is_err());
     ///
-    ///     // fail when the keys don't exist
-    ///     assert!(timestamp.verify(
-    ///         1,
-    ///         &[],
-    ///     ).is_err());
-    /// }
+    /// // fail when the keys don't exist
+    /// assert!(timestamp.verify(
+    ///     1,
+    ///     &[],
+    /// ).is_err());
+    /// # }
     pub fn verify<'a, I>(&self, threshold: u32, authorized_keys: I) -> Result<()>
     where
         I: IntoIterator<Item = &'a PublicKey>,
@@ -696,8 +696,7 @@
     /// Create a new `MetadataPath` from a `String`.
     ///
     /// ```
-    /// use tuf::metadata::MetadataPath;
-    ///
+    /// # use tuf::metadata::MetadataPath;
     /// assert!(MetadataPath::new("foo".into()).is_ok());
     /// assert!(MetadataPath::new("/foo".into()).is_err());
     /// assert!(MetadataPath::new("../foo".into()).is_err());
@@ -715,8 +714,7 @@
     /// Create a metadata path from the given role.
     ///
     /// ```
-    /// use tuf::metadata::{Role, MetadataPath};
-    ///
+    /// # use tuf::metadata::{Role, MetadataPath};
     /// assert_eq!(MetadataPath::from_role(&Role::Root),
     ///            MetadataPath::new("root".into()).unwrap());
     /// assert_eq!(MetadataPath::from_role(&Role::Snapshot),
@@ -734,10 +732,10 @@
     /// Windows paths.
     ///
     /// ```
-    /// use tuf::crypto::HashValue;
-    /// use tuf::interchange::Json;
-    /// use tuf::metadata::{MetadataPath, MetadataVersion};
-    ///
+    /// # use tuf::crypto::HashValue;
+    /// # use tuf::interchange::Json;
+    /// # use tuf::metadata::{MetadataPath, MetadataVersion};
+    /// #
     /// let path = MetadataPath::new("foo/bar".into()).unwrap();
     /// assert_eq!(path.components::<Json>(&MetadataVersion::None),
     ///            ["foo".to_string(), "bar.json".to_string()]);
@@ -1009,8 +1007,7 @@
     /// Create a new `TargetPath` from a `String`.
     ///
     /// ```
-    /// use tuf::metadata::TargetPath;
-    ///
+    /// # use tuf::metadata::TargetPath;
     /// assert!(TargetPath::new("foo".into()).is_ok());
     /// assert!(TargetPath::new("/foo".into()).is_err());
     /// assert!(TargetPath::new("../foo".into()).is_err());
@@ -1029,8 +1026,7 @@
     /// Windows paths.
     ///
     /// ```
-    /// use tuf::metadata::TargetPath;
-    ///
+    /// # use tuf::metadata::TargetPath;
     /// let path = TargetPath::new("foo/bar".into()).unwrap();
     /// assert_eq!(path.components(), ["foo".to_string(), "bar".to_string()]);
     /// ```
@@ -1041,8 +1037,7 @@
     /// Return whether this path is the child of another path.
     ///
     /// ```
-    /// use tuf::metadata::TargetPath;
-    ///
+    /// # use tuf::metadata::TargetPath;
     /// let path1 = TargetPath::new("foo".into()).unwrap();
     /// let path2 = TargetPath::new("foo/bar".into()).unwrap();
     /// assert!(!path2.is_child(&path1));