diff --git a/.travis.yml b/.travis.yml
index a5c256b3..54f3339b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -24,6 +24,11 @@ before_install:
   - sudo apt-get update -qq
   - sudo apt-get install -y openssl libssl-dev libelf-dev libdw-dev cmake gcc binutils-dev libiberty-dev
 
+before_cache: |
+  if [[ "$TRAVIS_RUST_VERSION" == "nightly-2019-03-02" ]]; then
+    RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install cargo-tarpaulin
+  fi
+
 # Add clippy
 before_script:
   - export PATH=$PATH:~/.cargo/bin
@@ -41,10 +46,27 @@ script:
     cd actix-utils && cargo test && cd ..
     cd router && cargo test && cd ..
     fi
+
+after_success:
   - |
     if [[ "$TRAVIS_RUST_VERSION" == "nightly-2019-03-02" ]]; then
-    RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install --git https://github.com/xd009642/tarpaulin.git --branch develop
-    cargo tarpaulin --all --all-features --out Xml
+    #cd actix-service && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+    #cd actix-rt && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+    #cd actix-connect && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+    #cd actix-codec && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+    #cd actix-server && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+    #cd actix-utils && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+    #cd router && cargo tarpaulin --out Xml && bash <(curl -s https://codecov.io/bash) && cd ..
+
+    cd actix-service && cargo tarpaulin --out Xml && cd ..
+    #cd actix-rt && cargo tarpaulin --out Xml && cd ..
+    cd actix-connect && cargo tarpaulin --out Xml && cd ..
+    #cd actix-codec && cargo tarpaulin --out Xml && cd ..
+    #cd actix-server && cargo tarpaulin --out Xml && cd ..
+    cd actix-utils && cargo tarpaulin --out Xml && cd ..
+    cd router && cargo tarpaulin --out Xml && cd ..
+
+    # cargo tarpaulin --all --all-features --out Xml
     echo "Uploaded code coverage"
     bash <(curl -s https://codecov.io/bash)
     fi
diff --git a/actix-connect/src/uri.rs b/actix-connect/src/uri.rs
index 4f992121..98da805e 100644
--- a/actix-connect/src/uri.rs
+++ b/actix-connect/src/uri.rs
@@ -25,6 +25,7 @@ fn port(scheme: Option<&str>) -> Option<u16> {
             "ws" => Some(80),
             "wss" => Some(443),
             "amqp" => Some(5672),
+            "amqps" => Some(5671),
             "mqtt" => Some(1883),
             "mqtts" => Some(8883),
             _ => None,
diff --git a/actix-server/tests/test_server.rs b/actix-server/tests/test_server.rs
index deeba086..6afb8ca6 100644
--- a/actix-server/tests/test_server.rs
+++ b/actix-server/tests/test_server.rs
@@ -22,9 +22,11 @@ fn unused_addr() -> net::SocketAddr {
 #[test]
 fn test_bind() {
     let addr = unused_addr();
+    let (tx, rx) = mpsc::channel();
 
-    thread::spawn(move || {
-        Server::build()
+    let h = thread::spawn(move || {
+        let sys = actix_rt::System::new("test");
+        let srv = Server::build()
             .bind("test", addr, move || {
                 fn_cfg_factory(move |cfg: &ServerConfig| {
                     assert_eq!(cfg.local_addr(), addr);
@@ -32,11 +34,16 @@ fn test_bind() {
                 })
             })
             .unwrap()
-            .run()
+            .start();
+        let _ = tx.send((srv, actix_rt::System::current()));
+        let _ = sys.run();
     });
+    let (_, sys) = rx.recv().unwrap();
 
     thread::sleep(time::Duration::from_millis(500));
     assert!(net::TcpStream::connect(addr).is_ok());
+    let _ = sys.stop();
+    let _ = h.join();
 }
 
 #[test]
@@ -44,7 +51,7 @@ fn test_bind_no_config() {
     let addr = unused_addr();
     let (tx, rx) = mpsc::channel();
 
-    thread::spawn(move || {
+    let h = thread::spawn(move || {
         let sys = actix_rt::System::new("test");
         let srv = Server::build()
             .bind("test", addr, move || fn_service(|_| Ok::<_, ()>(())))
@@ -56,15 +63,18 @@ fn test_bind_no_config() {
     let (_, sys) = rx.recv().unwrap();
     assert!(net::TcpStream::connect(addr).is_ok());
     let _ = sys.stop();
+    let _ = h.join();
 }
 
 #[test]
 fn test_listen() {
     let addr = unused_addr();
+    let (tx, rx) = mpsc::channel();
 
-    thread::spawn(move || {
+    let h = thread::spawn(move || {
+        let sys = actix_rt::System::new("test");
         let lst = net::TcpListener::bind(addr).unwrap();
-        Server::build()
+        let srv = Server::build()
             .listen("test", lst, move || {
                 fn_cfg_factory(move |cfg: &ServerConfig| {
                     assert_eq!(cfg.local_addr(), addr);
@@ -72,11 +82,16 @@ fn test_listen() {
                 })
             })
             .unwrap()
-            .run()
+            .start();
+        let _ = tx.send((srv, actix_rt::System::current()));
+        let _ = sys.run();
     });
+    let (_, sys) = rx.recv().unwrap();
 
     thread::sleep(time::Duration::from_millis(500));
     assert!(net::TcpStream::connect(addr).is_ok());
+    let _ = sys.stop();
+    let _ = h.join();
 }
 
 #[test]
@@ -85,9 +100,8 @@ fn test_start() {
     let addr = unused_addr();
     let (tx, rx) = mpsc::channel();
 
-    thread::spawn(move || {
+    let h = thread::spawn(move || {
         let sys = actix_rt::System::new("test");
-
         let srv = Server::build()
             .backlog(100)
             .bind("test", addr, move || {
@@ -144,4 +158,5 @@ fn test_start() {
 
     thread::sleep(time::Duration::from_millis(100));
     let _ = sys.stop();
+    let _ = h.join();
 }
diff --git a/actix-utils/src/order.rs b/actix-utils/src/order.rs
index e40536c7..33efa025 100644
--- a/actix-utils/src/order.rs
+++ b/actix-utils/src/order.rs
@@ -245,7 +245,7 @@ mod tests {
         let (tx3, rx3) = oneshot::channel();
         let (tx_stop, rx_stop) = oneshot::channel();
 
-        std::thread::spawn(move || {
+        let h = std::thread::spawn(move || {
             let rx1 = rx1;
             let rx2 = rx2;
             let rx3 = rx3;
@@ -274,5 +274,6 @@ mod tests {
         let _ = tx1.send(1);
 
         let _ = rx_stop.wait();
+        let _ = h.join();
     }
 }