diff --git a/src/body.rs b/src/body.rs
index 53af6e40..7eaa5446 100644
--- a/src/body.rs
+++ b/src/body.rs
@@ -31,13 +31,8 @@ pub enum Binary {
     Bytes(Bytes),
     /// Static slice
     Slice(&'static [u8]),
-    /// Shared bytes body
-    SharedBytes(Rc<Bytes>),
     /// Shared stirng body
     SharedString(Rc<String>),
-    /// Shared bytes body
-    #[doc(hidden)]
-    ArcSharedBytes(Arc<Bytes>),
     /// Shared string body
     #[doc(hidden)]
     ArcSharedString(Arc<String>),
@@ -118,8 +113,6 @@ impl Binary {
         match *self {
             Binary::Bytes(ref bytes) => bytes.len(),
             Binary::Slice(slice) => slice.len(),
-            Binary::SharedBytes(ref bytes) => bytes.len(),
-            Binary::ArcSharedBytes(ref bytes) => bytes.len(),
             Binary::SharedString(ref s) => s.len(),
             Binary::ArcSharedString(ref s) => s.len(),
         }
@@ -131,6 +124,17 @@ impl Binary {
     }
 }
 
+impl Into<Bytes> for Binary {
+    fn into(self) -> Bytes {
+        match self {
+            Binary::Bytes(bytes) => bytes,
+            Binary::Slice(slice) => Bytes::from(slice),
+            Binary::SharedString(s) => Bytes::from(s.as_str()),
+            Binary::ArcSharedString(s) => Bytes::from(s.as_str()),
+        }
+    }
+}
+
 impl From<&'static str> for Binary {
     fn from(s: &'static str) -> Binary {
         Binary::Slice(s.as_ref())
@@ -173,30 +177,6 @@ impl From<BytesMut> for Binary {
     }
 }
 
-impl From<Rc<Bytes>> for Binary {
-    fn from(body: Rc<Bytes>) -> Binary {
-        Binary::SharedBytes(body)
-    }
-}
-
-impl<'a> From<&'a Rc<Bytes>> for Binary {
-    fn from(body: &'a Rc<Bytes>) -> Binary {
-        Binary::SharedBytes(Rc::clone(body))
-    }
-}
-
-impl From<Arc<Bytes>> for Binary {
-    fn from(body: Arc<Bytes>) -> Binary {
-        Binary::ArcSharedBytes(body)
-    }
-}
-
-impl<'a> From<&'a Arc<Bytes>> for Binary {
-    fn from(body: &'a Arc<Bytes>) -> Binary {
-        Binary::ArcSharedBytes(Arc::clone(body))
-    }
-}
-
 impl From<Rc<String>> for Binary {
     fn from(body: Rc<String>) -> Binary {
         Binary::SharedString(body)
@@ -226,8 +206,6 @@ impl AsRef<[u8]> for Binary {
         match *self {
             Binary::Bytes(ref bytes) => bytes.as_ref(),
             Binary::Slice(slice) => slice,
-            Binary::SharedBytes(ref bytes) => bytes.as_ref(),
-            Binary::ArcSharedBytes(ref bytes) => bytes.as_ref(),
             Binary::SharedString(ref s) => s.as_bytes(),
             Binary::ArcSharedString(ref s) => s.as_bytes(),
         }
@@ -242,7 +220,6 @@ mod tests {
     fn test_body_is_streaming() {
         assert_eq!(Body::Empty.is_streaming(), false);
         assert_eq!(Body::Binary(Binary::from("")).is_streaming(), false);
-        // assert_eq!(Body::Streaming.is_streaming(), true);
     }
 
     #[test]
@@ -277,15 +254,6 @@ mod tests {
         assert_eq!(Binary::from(Bytes::from("test")).as_ref(), "test".as_bytes());
     }
 
-    #[test]
-    fn test_rc_bytes() {
-        let b = Rc::new(Bytes::from("test"));
-        assert_eq!(Binary::from(b.clone()).len(), 4);
-        assert_eq!(Binary::from(b.clone()).as_ref(), "test".as_bytes());
-        assert_eq!(Binary::from(&b).len(), 4);
-        assert_eq!(Binary::from(&b).as_ref(), "test".as_bytes());
-    }
-
     #[test]
     fn test_ref_string() {
         let b = Rc::new("test".to_owned());
@@ -302,15 +270,6 @@ mod tests {
         assert_eq!(Binary::from(&b).as_ref(), "test".as_bytes());
     }
 
-    #[test]
-    fn test_arc_bytes() {
-        let b = Arc::new(Bytes::from("test"));
-        assert_eq!(Binary::from(b.clone()).len(), 4);
-        assert_eq!(Binary::from(b.clone()).as_ref(), "test".as_bytes());
-        assert_eq!(Binary::from(&b).len(), 4);
-        assert_eq!(Binary::from(&b).as_ref(), "test".as_bytes());
-    }
-
     #[test]
     fn test_arc_string() {
         let b = Arc::new("test".to_owned());
@@ -335,4 +294,13 @@ mod tests {
         assert_eq!(Binary::from(b.clone()).len(), 4);
         assert_eq!(Binary::from(b).as_ref(), "test".as_bytes());
     }
+
+    #[test]
+    fn test_binary_into() {
+        let bytes = Bytes::from_static(b"test");
+        let b: Bytes = Binary::from("test").into();
+        assert_eq!(b, bytes);
+        let b: Bytes = Binary::from(bytes.clone()).into();
+        assert_eq!(b, bytes);
+    }
 }
diff --git a/src/middleware/cors.rs b/src/middleware/cors.rs
index b7970845..9b703cbf 100644
--- a/src/middleware/cors.rs
+++ b/src/middleware/cors.rs
@@ -794,6 +794,7 @@ mod tests {
     fn test_response() {
         let cors = Cors::build()
             .send_wildcard()
+            .disable_preflight()
             .max_age(3600)
             .allowed_methods(vec![Method::GET, Method::OPTIONS, Method::POST])
             .allowed_headers(vec![header::AUTHORIZATION, header::ACCEPT])
@@ -823,6 +824,7 @@ mod tests {
             resp.headers().get(header::VARY).unwrap().as_bytes());
 
         let cors = Cors::build()
+            .disable_vary_header()
             .allowed_origin("https://www.example.com")
             .finish().unwrap();
         let resp: HttpResponse = HTTPOk.into();