diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 1163e413141c40201ce23b188ae4b139c1109565..ac3ed4a9c408f1475f2cc9153d64311b888fe196 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -11,8 +11,7 @@ on: [push]
 #      - '!third_party/**'
 
 jobs:
-  initial_setup:
-    name: Set up project
+  cargo:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v2
@@ -21,67 +20,56 @@ jobs:
           toolchain: nightly
           target: thumbv7em-none-eabi
           override: true
-      - name: Set up Python 3.7
-        uses: actions/setup-python@v1
+      - uses: actions/setup-python@v1
         with:
           python-version: 3.7
-      - run: python -m pip install --upgrade pip setuptools wheel
-      - run: ./setup.sh
+      - name: Install Python dependencies
+        run: python -m pip install --upgrade pip setuptools wheel
+      - name: Set up OpenSK
+        run: ./setup.sh
 
-  cargo_format_src:
-    name: Cargo format src/
-    runs-on: ubuntu-latest
-    needs: initial_setup
-    steps:
-      - uses: actions-rs/cargo@v1
+      - name: Cargo format src/
+        uses: actions-rs/cargo@v1
         with:
           command: fmt
           args: --all -- --check
-  cargo_format_cbor:
-    name: Cargo format libraries/cbor
-    runs-on: ubuntu-latest
-    needs: initial_setup
-    steps:
-      - run: cd libraries/crypto
-      - uses: actions-rs/cargo@v1
+
+      - name: Cargo format libraries/cbor
+        uses: actions-rs/cargo@v1
         with:
           command: fmt
-          args: --all -- --check
-  cargo_format_crypto:
-    name: Cargo format libraries/crypto
-    runs-on: ubuntu-latest
-    needs: initial_setup
-    steps:
-      - run: cd libraries/crypto
-      - uses: actions-rs/cargo@v1
+          args: --manifest-path libraries/cbor/Cargo.toml --all -- --check
+
+      - name: Cargo format libraries/crypto
+        uses: actions-rs/cargo@v1
         with:
           command: fmt
-          args: --all -- --check
-  cargo_check:
-    name: Cargo Check
-    runs-on: ubuntu-latest
-    needs: initial_setup
-    steps:
+          args: --manifest-path libraries/crypto/Cargo.toml --all -- --check
+
       - name: Check OpenSK w/o features
         uses: actions-rs/cargo@v1
         with:
           command: check
           args: --target thumbv7em-none-eabi --release
+
       - name: Check OpenSK with_ctap1
         uses: actions-rs/cargo@v1
         with:
           command: check
           args: --target thumbv7em-none-eabi --release --features with_ctap1
+
       - name: Check OpenSK debug_ctap
         uses: actions-rs/cargo@v1
         with:
           command: check
           args: --target thumbv7em-none-eabi --release --features debug_ctap
+
       - name: Check OpenSK debug_ctap,with_ctap1
         uses: actions-rs/cargo@v1
         with:
           command: check
           args: --target thumbv7em-none-eabi --release --features debug_ctap,with_ctap1
+
       - name: Check examples
         uses: actions-rs/cargo@v1
         with: