diff --git a/.circleci/config.yml b/.circleci/config.yml
index 29858818167968060a19ef492f7b3f6c66f55342..f297a047b0c968a1bb951528b726ac80e435022d 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,140 +1,147 @@
 version: 2.1
 orbs:
   android: circleci/android@0.2.1
-  sonarcloud: sonarsource/sonarcloud@1.0.1
+  sonarcloud: sonarsource/sonarcloud@1.0.2
 commands:
   install-ndk: android/install-ndk
-  restore-build-cache: android/restore-build-cache
-  save-build-cache: android/save-build-cache
+  restore-android-build-cache: android/restore-build-cache
+  save-android-build-cache: android/save-build-cache
   scan-sonar: sonarcloud/scan
-jobs:
-  quick_build_release_no_tests:
-    executor: android/android
-    resource_class: large
+  restore-gradle-cache:
+    description: "Restore gradle caches"
+    steps:
+      - restore_cache:
+          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
+  save-gradle-cache:
+    description: "Save gradle caches"
+    steps:
+      - save_cache:
+          paths:
+            - ~/.gradle
+          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
+  require-version-bump:
+    description: "Require version bump for binary assembling"
     steps:
-      - checkout
       - run:
-          name: Check if assemble required
+          name: "Check if assemble required"
           command: |
             last_commit=$(git log -1 --pretty=%B)
             if [[ $last_commit != *"Version bump"* ]]; then
               circleci-agent step halt
               echo "Skipping job"
             fi
-      - install-ndk:
-          ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8"
-          ndk-version: "android-ndk-r21c"
-      - restore-build-cache
-      - restore_cache:
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
+  run-gradle-cmd:
+    description: "Running gradle command with environment options"
+    parameters:
+      desc:
+        type: string
+        default: "Running gradle command"
+      cmd:
+        type: string
+    steps:
       - run:
-          name: Quick Build
-          command: ./gradlew assembleDeviceRelease
+          name: << parameters.desc >>
+          command: ./gradlew << parameters.cmd >>
           environment:
             JVM_OPTS: -Xmx2048m
             GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
-      - save-build-cache
-      - save_cache:
-          paths:
-            - ~/.gradle
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
+  run-gradle-cmd-test-splitting:
+    description: "Running gradle command with environment options and test splitting"
+    parameters:
+      desc:
+        type: string
+        default: "Running gradle command"
+      cmd:
+        type: string
+    steps:
+      - run:
+          name: Test splitting output
+          command: circleci tests glob "**/test*/**/*.kt" | circleci tests split | xargs -n 1 echo
+      - run:
+          name: << parameters.desc >>
+          command: ./gradlew << parameters.cmd >> -i -PtestFilter="`circleci tests glob "**/test*/**/*.kt" | circleci tests split`"
+          environment:
+            JVM_OPTS: -Xmx2048m
+            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+
+jobs:
+  quick_build_device_release_no_tests:
+    executor: android/android
+    resource_class: large
+    working_directory: ~/project
+    steps:
+      - checkout
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - require-version-bump
+      - install-ndk:
+          ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8"
+          ndk-version: "android-ndk-r21c"
+      - run-gradle-cmd:
+          desc: Quick Build
+          cmd: "assembleDeviceRelease"
+      - save-gradle-cache
+      - save-android-build-cache
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
-  quick_build_for_testers_no_tests:
+  quick_build_device_for_testers_release_no_tests:
     executor: android/android
     resource_class: large
+    working_directory: ~/project
     steps:
       - checkout
-      - run:
-          name: Check if assemble required
-          command: |
-            last_commit=$(git log -1 --pretty=%B)
-            if [[ $last_commit != *"Version bump"* ]]; then
-              circleci-agent step halt
-              echo "Skipping job"
-            fi
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - require-version-bump
       - install-ndk:
           ndk-sha: "c81a5bcb4672a18d3647bf6898cd4dbcb978d0e8"
           ndk-version: "android-ndk-r21c"
-      - restore-build-cache
-      - restore_cache:
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
-      - run:
-          name: Quick Build
-          command: ./gradlew :Corona-Warn-App:assembleDeviceForTestersRelease
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
-      - save-build-cache
-      - save_cache:
-          paths:
-            - ~/.gradle
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
+      - run-gradle-cmd:
+          desc: Quick Build
+          cmd: ":Corona-Warn-App:assembleDeviceForTestersRelease"
+      - save-gradle-cache
+      - save-android-build-cache
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
   device_release_unit_tests:
     executor: android/android
     resource_class: large
-    parallelism: 4
+    working_directory: ~/project
+    parallelism: 3
     steps:
       - checkout
-      - restore-build-cache
-      - restore_cache:
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
-      - run:
-          name: test splitting output
-          command: circleci tests glob "**/test*/**/*.kt" | circleci tests split | xargs -n 1 echo
-      - run:
-          name: Unit tests
-          command: ./gradlew :Corona-Warn-App:testDeviceReleaseUnitTest -i -PtestFilter="`circleci tests glob "**/test*/**/*.kt" | circleci tests split`"
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
-      - save-build-cache
-      - save_cache:
-          paths:
-            - ~/.gradle
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
-      - run:
-          name: JaCoCo report
-          command: ./gradlew :Corona-Warn-App:jacocoTestReportDeviceRelease
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd-test-splitting:
+          desc: Unit tests
+          cmd: ":Corona-Warn-App:testDeviceReleaseUnitTest -i"
+      - save-gradle-cache
+      - save-android-build-cache
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
       - store_test_results:
           path: Corona-Warn-App/build/test-results
-      - run:
-          name: Skip SonarCloud for external Pull Requests
-          command: '[[ -v CIRCLE_PR_REPONAME ]] && circleci-agent step halt || true'
-      - scan-sonar
-  device_for_testers_unit_tests:
+      - persist_to_workspace:
+          root: /home/circleci
+          paths:
+            - ./project
+  device_for_testers_release_unit_tests:
     executor: android/android
     resource_class: large
-    parallelism: 4
+    working_directory: ~/project
+    parallelism: 3
     steps:
       - checkout
-      - restore-build-cache
-      - restore_cache:
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
-      - run:
-          name: test splitting output
-          command: circleci tests glob "**/test*/**/*.kt" | circleci tests split | xargs -n 1 echo
-      - run:
-          name: Unit tests
-          command: ./gradlew :Corona-Warn-App:testDeviceForTestersReleaseUnitTest -i -PtestFilter="`circleci tests glob "**/test*/**/*.kt" | circleci tests split`"
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
-      - save-build-cache
-      - save_cache:
-          paths:
-            - ~/.gradle
-          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "Corona-Warn-App/build.gradle" }}-{{ checksum  "Server-Protocol-Buffer/build.gradle" }}
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd-test-splitting:
+          desc: Unit tests with splitting
+          cmd: ":Corona-Warn-App:testDeviceForTestersReleaseUnitTest"
+      - save-gradle-cache
+      - save-android-build-cache
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
@@ -143,83 +150,102 @@ jobs:
   lint_device_release_check:
     executor: android/android
     resource_class: large
+    working_directory: ~/project
     steps:
       - checkout
-      - run:
-          name: Lint check device release
-          command: ./gradlew --profile :Corona-Warn-App:lintDeviceRelease
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: Lint check deviceRelease
+          cmd: ":Corona-Warn-App:lintDeviceRelease -i"
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
   ktlint_device_release_check:
     executor: android/android
     resource_class: medium
+    working_directory: ~/project
     steps:
       - checkout
-      - run:
-          name: Ktlint check device release
-          command: ./gradlew :Corona-Warn-App:ktlintDeviceReleaseCheck
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: Ktlint check deviceRelease
+          cmd: ":Corona-Warn-App:ktlintDeviceReleaseCheck"
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
-  lint_device_for_testers_check:
+  lint_device_for_testers_release_check:
     executor: android/android
     resource_class: large
+    working_directory: ~/project
     steps:
       - checkout
-      - run:
-          name: Lint check device for testers
-          command: ./gradlew --profile :Corona-Warn-App:lintDeviceForTestersRelease
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: Lint check deviceForTestersRelease
+          cmd: ":Corona-Warn-App:lintDeviceForTestersRelease -i"
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
-  ktlint_device_for_testers_check:
+  ktlint_device_for_testers_release_check:
     executor: android/android
     resource_class: medium
+    working_directory: ~/project
     steps:
       - checkout
-      - run:
-          name: Ktlint check device for testers
-          command: ./gradlew :Corona-Warn-App:ktlintDeviceForTestersReleaseCheck
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: Ktlint check deviceForTestersRelease
+          cmd: ":Corona-Warn-App:ktlintDeviceForTestersReleaseCheck"
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
   detekt:
     executor: android/android
     resource_class: medium
+    working_directory: ~/project
     steps:
       - checkout
-      - run:
-          name: Detekt check
-          command: ./gradlew :Corona-Warn-App:detekt
-          environment:
-            JVM_OPTS: -Xmx2048m
-            GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: Detekt check
+          cmd: ":Corona-Warn-App:detekt"
       - store_artifacts:
           path: Corona-Warn-App/build/reports
           destination: reports
+  run_sonar:
+    executor: android/android
+    resource_class: large
+    working_directory: ~/project
+    steps:
+      - attach_workspace:
+          at: /home/circleci
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: JaCoCo report
+          cmd: ":Corona-Warn-App:jacocoTestReportDeviceRelease -i"
+      - run:
+          name: Skip SonarCloud for external Pull Requests
+          command: '[[ -v CIRCLE_PR_REPONAME ]] && circleci-agent step halt || true'
+      - scan-sonar
 workflows:
   version: 2
   quick_build:
     jobs:
-      - quick_build_release_no_tests
-      - quick_build_for_testers_no_tests
+      - quick_build_device_release_no_tests
+      - quick_build_device_for_testers_release_no_tests
       - device_release_unit_tests
-      - device_for_testers_unit_tests
+      - device_for_testers_release_unit_tests
       - lint_device_release_check
-      - lint_device_for_testers_check
+      - lint_device_for_testers_release_check
       - ktlint_device_release_check
-      - ktlint_device_for_testers_check
+      - ktlint_device_for_testers_release_check
       - detekt
+      - run_sonar:
+          requires:
+            - device_release_unit_tests
diff --git a/Corona-Warn-App/src/main/res/values-tr/strings.xml b/Corona-Warn-App/src/main/res/values-tr/strings.xml
index e56795e493e4074e0cab05c53b1874bd730d605e..62d35a5b58357a2a9a91cb004a4128657180069b 100644
--- a/Corona-Warn-App/src/main/res/values-tr/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-tr/strings.xml
@@ -214,7 +214,7 @@
     <!-- XTXT: main, explains faq on card -->
     <string name="main_about_body">"Bu bölümde, Corona-Warn-App hakkında sık sorulan soruların yanıtlarını bulabilirsiniz. Alman hükûmetinin harici bir web sitesine yönlendirileceksiniz."</string>
     <!-- XTXT: FAQ link, should be translated  -->
-    <string name="main_about_link">"https://www.bundesregierung.de/corona-warn-app-faq-englisch"</string>
+    <string name="main_about_link">"https://www.bundesregierung.de/corona-warn-app-faq-tuerkisch"</string>
     <!-- XACT: Opens external webpage -->
     <string name="hint_external_webpage">"Bu bölümde, Corona-Warn-App hakkında sık sorulan soruların yanıtlarını bulabilirsiniz. Harici bir web sitesine yönlendirileceksiniz."</string>
 
diff --git a/Corona-Warn-App/src/main/res/values/legal_strings.xml b/Corona-Warn-App/src/main/res/values/legal_strings.xml
index 5e7e488e912c474ba14d0bbec7158f34d4aad235..117e87dbb30cbfee51b4f5a8ff37b5a951799b2b 100644
--- a/Corona-Warn-App/src/main/res/values/legal_strings.xml
+++ b/Corona-Warn-App/src/main/res/values/legal_strings.xml
@@ -20,5 +20,5 @@
     <!-- XHED: onboarding(tracing) - headline for consent information -->
     <string name="onboarding_tracing_headline_consent" translatable="false">"Declaration of consent"</string>
     <!-- YTXT: onboarding(tracing) - body for consent information -->
-    <string name="onboarding_tracing_body_consent" translatable="false">"You need to enable exposure logging to find out whether you have had possible exposures involving app users in the participating countries and are therefore at risk of infection yourself. By tapping on the “Enable exposure logging” button, you agree to enabling the exposure logging feature and to the associated data processing by the app.\n\nIn order to use the exposure logging feature, you will also have to enable the “COVID-19 Exposure Notifications” functionality provided by Google on your Android smartphone and grant the Corona-Warn-App permission to use this.\n\nWhen COVID-19 Exposure Notifications are enabled, your Android smartphone continuously generates random IDs and sends them via Bluetooth so that they can be received by other smartphones near you. Your Android smartphone, in turn, receives the random IDs of other smartphones. Your own random IDs and those received from other smartphones are recorded by your Android smartphone and stored there for 14 days.\n\nFor exposure logging, the app downloads a list, which is updated daily, of the random IDs of all users who have shared their random IDs via their official coronavirus app. This list is then compared with the random IDs of other users which have been recorded by your smartphone.\n\nThe app will inform you if it detects a possible exposure. In this case, the app gains access to the data recorded by your smartphone about the possible exposure (date, duration and Bluetooth signal strength of the contact). The Bluetooth signal strength is used to derive the physical distance to the other user (the stronger the signal, the smaller the distance). The app analyses this information in order to calculate your risk of infection and to give you recommendations for what to do next. This analysis is only performed locally on your smartphone.\n\nApart from you, nobody (not even the RKI or the health authorities of participating countries) will know whether a possible exposure has been detected and what risk of infection has been identified for you.\n\nTo withdraw your consent to the exposure logging feature, you can disable the feature by using the toggle switch in the app or delete the app. If you would like to use the exosure logging feature again, you can toggle the feature back on or reinstall the app. If you disable the exposure logging feature, the app will no longer check for possible exposures. If you also wish to stop your device sending and receiving random IDs, you will need to disable COVID-19 Exposure Notifications in your Android smartphone settings. Please note that your own random IDs and those received from other smartphones which are stored by your Android smartphone’s COVID-19 Exposure Notification functionality will not be deleted by the app. You can only permanently delete these in your Android smartphone settings.\n\nThe app’s privacy notice (including information about the data processing carried out for the transnational exposure logging feature) can be found in the menu under „App Information“ > „Data Privacy“."</string>
+    <string name="onboarding_tracing_body_consent" translatable="false">"You need to enable exposure logging to find out whether you have had possible exposures involving app users in the participating countries and are therefore at risk of infection yourself. By tapping on the “Activate exposure logging” button, you agree to enabling the exposure logging feature and to the associated data processing by the app.\n\nIn order to use the exposure logging feature, you will also have to enable the “COVID-19 Exposure Notifications” functionality provided by Google on your Android smartphone and grant the Corona-Warn-App permission to use this.\n\nWhen COVID-19 Exposure Notifications are enabled, your Android smartphone continuously generates random IDs and sends them via Bluetooth so that they can be received by other smartphones near you. Your Android smartphone, in turn, receives the random IDs of other smartphones. Your own random IDs and those received from other smartphones are recorded by your Android smartphone and stored there for 14 days.\n\nFor exposure logging, the app downloads a list, which is updated daily, of the random IDs of all users who have shared their random IDs via their official coronavirus app. This list is then compared with the random IDs of other users which have been recorded by your smartphone.\n\nThe app will inform you if it detects a possible exposure. In this case, the app gains access to the data recorded by your smartphone about the possible exposure (date, duration and Bluetooth signal strength of the contact). The Bluetooth signal strength is used to derive the physical distance to the other user (the stronger the signal, the smaller the distance). The app analyses this information in order to calculate your risk of infection and to give you recommendations for what to do next. This analysis is only performed locally on your smartphone.\n\nApart from you, nobody (not even the RKI or the health authorities of participating countries) will know whether a possible exposure has been detected and what risk of infection has been identified for you.\n\nTo withdraw your consent to the exposure logging feature, you can disable the feature by using the toggle switch in the app or delete the app. If you would like to use the exosure logging feature again, you can toggle the feature back on or reinstall the app. If you disable the exposure logging feature, the app will no longer check for possible exposures. If you also wish to stop your device sending and receiving random IDs, you will need to disable COVID-19 Exposure Notifications in your Android smartphone settings. Please note that your own random IDs and those received from other smartphones which are stored by your Android smartphone’s COVID-19 Exposure Notification functionality will not be deleted by the app. You can only permanently delete these in your Android smartphone settings.\n\nThe app’s privacy notice (including information about the data processing carried out for the transnational exposure logging feature) can be found in the menu under „App Information“ > „Data Privacy“."</string>
 </resources>