diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml
index 43a834f094709094096c894b0f3333a15f65eb7d..06f6d5af7843901137e191926078cad0a1066b5a 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml
@@ -42,14 +42,23 @@
                 android:layout_height="wrap_content"
                 android:text="Preview (no interaction possible)" />
 
-            <include
+            <FrameLayout
                 android:id="@+id/test_risk_card"
-                layout="@layout/include_risk_card"
+                style="@style/card"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:visibility="@{FormatterSubmissionHelper.formatShowRiskStatusCard(submissionViewModel.deviceUiState)}"
-                app:tracingCard="@{tracingCard}" />
+                android:focusable="true"
+                android:backgroundTint="@{tracingCard.getRiskInfoContainerBackgroundTint(context)}"
+                android:backgroundTintMode="src_over">
+
+                <include
+                    android:id="@+id/risk_card_content"
+                    layout="@layout/include_risk_card_content"
+                    app:tracingCard="@{tracingCard}" />
+
+            </FrameLayout>
 
             <LinearLayout
                 android:layout_width="match_parent"
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
index 131d74757d4a7919eb9405270162ae1e21bfb017..ee61db71c19e73a187fd6130fbc024995e598189 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
@@ -8,6 +8,7 @@ import de.rki.coronawarnapp.nearby.ENFClient
 import de.rki.coronawarnapp.nearby.InternalExposureNotificationClient
 import de.rki.coronawarnapp.risk.TimeVariables.getActiveTracingDaysInRetentionPeriod
 import de.rki.coronawarnapp.timer.TimerHelper
+import de.rki.coronawarnapp.tracing.TracingProgress
 import de.rki.coronawarnapp.transaction.RetrieveDiagnosisKeysTransaction
 import de.rki.coronawarnapp.transaction.RiskLevelTransaction
 import de.rki.coronawarnapp.util.ConnectivityHelper
@@ -57,12 +58,16 @@ class TracingRepository @Inject constructor(
     }
 
     // TODO shouldn't access this directly
-    val internalIsRefreshing = MutableStateFlow(false)
-    val isRefreshing: Flow<Boolean> = combine(
+    private val internalIsRefreshing = MutableStateFlow(false)
+    val tracingProgress: Flow<TracingProgress> = combine(
         internalIsRefreshing,
         enfClient.isCurrentlyCalculating()
-    ) { isRefreshing, isCalculating ->
-        isRefreshing || isCalculating
+    ) { isDownloading, isCalculating ->
+        when {
+            isDownloading -> TracingProgress.Downloading
+            isCalculating -> TracingProgress.ENFIsCalculating
+            else -> TracingProgress.Idle
+        }
     }
 
     /**
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/TracingProgress.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/TracingProgress.kt
new file mode 100644
index 0000000000000000000000000000000000000000..aa4416de0b312c310b2623548007880b4f582d02
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/TracingProgress.kt
@@ -0,0 +1,10 @@
+package de.rki.coronawarnapp.tracing
+
+sealed class TracingProgress {
+
+    object Idle : TracingProgress()
+
+    object Downloading : TracingProgress()
+
+    object ENFIsCalculating : TracingProgress()
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt
index 1c5a321dd99d823e02a8bf56f75dfb05ba649468..2b85288ee4d04fd0d28d92beaeac706d52c205de 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt
@@ -116,10 +116,10 @@ class HomeFragment : Fragment(R.layout.fragment_home), AutoInject {
     }
 
     private fun setupRiskCard() {
-        binding.mainRisk.apply {
-            riskCard.setOnClickListener {
-                doNavigate(HomeFragmentDirections.actionMainFragmentToRiskDetailsFragment())
-            }
+        binding.riskCard.setOnClickListener {
+            doNavigate(HomeFragmentDirections.actionMainFragmentToRiskDetailsFragment())
+        }
+        binding.riskCardContent.apply {
             riskCardButtonUpdate.setOnClickListener {
                 vm.refreshDiagnosisKeys()
                 vm.settingsViewModel.updateManualKeyRetrievalEnabled(false)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardState.kt
index aa993a6b36f8655f9fcf94a3734f1d91979a1ab1..56a85ecc4d1cfd937e39b41a301588fb56e6242c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardState.kt
@@ -1,19 +1,21 @@
 package de.rki.coronawarnapp.ui.tracing.card
 
 import android.content.Context
+import android.content.res.ColorStateList
 import android.graphics.drawable.Drawable
 import android.text.format.DateUtils
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskLevelConstants
 import de.rki.coronawarnapp.risk.TimeVariables
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.tracing.TracingProgress
 import de.rki.coronawarnapp.ui.tracing.common.BaseTracingState
 import java.util.Date
 
 data class TracingCardState(
     override val tracingStatus: GeneralTracingStatus.Status,
     override val riskLevelScore: Int,
-    override val isRefreshing: Boolean,
+    override val tracingProgress: TracingProgress,
     override val lastRiskLevelScoreCalculated: Int,
     override val matchedKeyCount: Int,
     override val daysSinceLastExposure: Int,
@@ -62,7 +64,7 @@ data class TracingCardState(
                 RiskLevelConstants.LOW_LEVEL_RISK,
                 RiskLevelConstants.INCREASED_RISK,
                 RiskLevelConstants.UNKNOWN_RISK_INITIAL -> {
-                    val arg = formatRiskLevelHeadline(c, lastRiskLevelScoreCalculated, false)
+                    val arg = formatRiskLevelHeadline(c, lastRiskLevelScoreCalculated)
                     c.getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
                         .format(arg)
                 }
@@ -260,29 +262,37 @@ data class TracingCardState(
     fun showUpdateButton(): Boolean =
         !isTracingOffRiskLevel() && !isBackgroundJobEnabled && !showDetails
 
-    /**
-     * Formats the risk card headline depending on risk level
-     * Special case of a running update is caught
-     */
-    fun getRiskLevelHeadline(c: Context): String =
-        formatRiskLevelHeadline(c, riskLevelScore, isRefreshing)
+    fun getRiskLevelHeadline(c: Context) = formatRiskLevelHeadline(c, riskLevelScore)
 
-    private fun formatRiskLevelHeadline(c: Context, riskLevelScore: Int, isRefreshing: Boolean) =
-        if (isRefreshing) {
-            c.getString(R.string.risk_card_loading_headline)
-        } else {
-            when (riskLevelScore) {
-                RiskLevelConstants.INCREASED_RISK -> c.getString(R.string.risk_card_increased_risk_headline)
-                RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS ->
-                    c.getString(R.string.risk_card_outdated_risk_headline)
-                RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF ->
-                    c.getString(R.string.risk_card_no_calculation_possible_headline)
-                RiskLevelConstants.LOW_LEVEL_RISK -> c.getString(R.string.risk_card_low_risk_headline)
-                RiskLevelConstants.UNKNOWN_RISK_INITIAL ->
-                    c.getString(R.string.risk_card_unknown_risk_headline)
-                RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS_MANUAL ->
-                    c.getString(R.string.risk_card_unknown_risk_headline)
-                else -> ""
-            }
-        }
+    fun formatRiskLevelHeadline(c: Context, riskLevelScore: Int) = when (riskLevelScore) {
+        RiskLevelConstants.INCREASED_RISK -> R.string.risk_card_increased_risk_headline
+        RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS -> R.string.risk_card_outdated_risk_headline
+        RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF -> R.string.risk_card_no_calculation_possible_headline
+        RiskLevelConstants.LOW_LEVEL_RISK -> R.string.risk_card_low_risk_headline
+        RiskLevelConstants.UNKNOWN_RISK_INITIAL -> R.string.risk_card_unknown_risk_headline
+        RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS_MANUAL -> R.string.risk_card_unknown_risk_headline
+        else -> null
+    }?.let { c.getString(it) } ?: ""
+
+    fun getProgressCardHeadline(c: Context): String = when (tracingProgress) {
+        TracingProgress.Downloading -> R.string.risk_card_progress_download_headline
+        TracingProgress.ENFIsCalculating -> R.string.risk_card_progress_calculation_headline
+        TracingProgress.Idle -> null
+    }?.let { c.getString(it) } ?: ""
+
+    fun getProgressCardBody(c: Context): String = when (tracingProgress) {
+        TracingProgress.Downloading -> R.string.risk_card_progress_download_body
+        TracingProgress.ENFIsCalculating -> R.string.risk_card_progress_calculation_body
+        TracingProgress.Idle -> null
+    }?.let { c.getString(it) } ?: ""
+
+    fun isTracingInProgress(): Boolean = tracingProgress != TracingProgress.Idle
+
+    fun getRiskInfoContainerBackgroundTint(c: Context): ColorStateList = when (riskLevelScore) {
+        RiskLevelConstants.INCREASED_RISK -> R.color.card_increased
+        RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS -> R.color.card_outdated
+        RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF -> R.color.card_no_calculation
+        RiskLevelConstants.LOW_LEVEL_RISK -> R.color.card_low
+        else -> R.color.card_unknown
+    }.let { c.getColorStateList(it) }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateProvider.kt
index 91406137d5482653533d2a210eb3d1a340b999c8..7e2f05d5beb481da9c76f9bcaacf0eb5f77f90ac 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateProvider.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateProvider.kt
@@ -34,8 +34,8 @@ class TracingCardStateProvider @Inject constructor(
         RiskLevelRepository.riskLevelScoreLastSuccessfulCalculated.onEach {
             Timber.v("riskLevelScoreLastSuccessfulCalculated: $it")
         },
-        tracingRepository.isRefreshing.onEach {
-            Timber.v("isRefreshing: $it")
+        tracingRepository.tracingProgress.onEach {
+            Timber.v("tracingProgress: $it")
         },
         ExposureSummaryRepository.matchedKeyCount.onEach {
             Timber.v("matchedKeyCount: $it")
@@ -61,7 +61,7 @@ class TracingCardStateProvider @Inject constructor(
     ) { status,
         riskLevelScore,
         riskLevelScoreLastSuccessfulCalculated,
-        isRefreshing,
+        tracingProgress,
         matchedKeyCount,
         daysSinceLastExposure,
         activeTracingDaysInRetentionPeriod,
@@ -73,7 +73,7 @@ class TracingCardStateProvider @Inject constructor(
         TracingCardState(
             tracingStatus = status,
             riskLevelScore = riskLevelScore,
-            isRefreshing = isRefreshing,
+            tracingProgress = tracingProgress,
             lastRiskLevelScoreCalculated = riskLevelScoreLastSuccessfulCalculated,
             lastTimeDiagnosisKeysFetched = lastTimeDiagnosisKeysFetched,
             matchedKeyCount = matchedKeyCount,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingState.kt
index 6ba53ca9f213c88435a13805c009e51027b02397..0961bf1c4e421a05e19f12d6d1e583a78f781e4f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingState.kt
@@ -1,18 +1,17 @@
 package de.rki.coronawarnapp.ui.tracing.common
 
 import android.content.Context
-import android.content.res.ColorStateList
-import android.graphics.drawable.Drawable
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskLevelConstants
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.tracing.TracingProgress
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.millisecondsToHMS
 import java.util.Date
 
 abstract class BaseTracingState {
     abstract val tracingStatus: GeneralTracingStatus.Status
     abstract val riskLevelScore: Int
-    abstract val isRefreshing: Boolean
+    abstract val tracingProgress: TracingProgress
     abstract val lastRiskLevelScoreCalculated: Int
     abstract val matchedKeyCount: Int
     abstract val daysSinceLastExposure: Int
@@ -23,36 +22,16 @@ abstract class BaseTracingState {
     abstract val isManualKeyRetrievalEnabled: Boolean
     abstract val manualKeyRetrievalTime: Long
 
-    fun getRiskShape(c: Context): Drawable? =
-        c.getDrawable(if (showDetails) R.drawable.rectangle else R.drawable.card)
-
-    /**
-     * Formats the risk card colors for default and pressed states depending on risk level
-     */
-    fun getRiskColor(c: Context): Int {
-        val colorRes = when (riskLevelScore) {
-            RiskLevelConstants.INCREASED_RISK -> R.color.colorSemanticHighRisk
-            RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS,
-            RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF -> R.color.colorSemanticUnknownRisk
-            RiskLevelConstants.LOW_LEVEL_RISK -> R.color.colorSemanticLowRisk
-            else -> R.color.colorSemanticNeutralRisk
-        }
-        return c.getColor(colorRes)
-    }
-
     /**
      * Formats the risk card colors for default and pressed states depending on risk level
      */
-    fun getRiskColorStateList(c: Context): ColorStateList? {
-        val resource = when (riskLevelScore) {
-            RiskLevelConstants.INCREASED_RISK -> R.color.card_increased
-            RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS -> R.color.card_outdated
-            RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF -> R.color.card_no_calculation
-            RiskLevelConstants.LOW_LEVEL_RISK -> R.color.card_low
-            else -> R.color.card_unknown
-        }
-        return c.getColorStateList(resource)
-    }
+    fun getRiskColor(c: Context): Int = when (riskLevelScore) {
+        RiskLevelConstants.INCREASED_RISK -> R.color.colorSemanticHighRisk
+        RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS,
+        RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF -> R.color.colorSemanticUnknownRisk
+        RiskLevelConstants.LOW_LEVEL_RISK -> R.color.colorSemanticLowRisk
+        else -> R.color.colorSemanticNeutralRisk
+    }.let { c.getColor(it) }
 
     fun isTracingOffRiskLevel(): Boolean = when (riskLevelScore) {
         RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF,
@@ -74,7 +53,5 @@ abstract class BaseTracingState {
         c.getString(R.string.risk_card_button_cooldown).format(hmsCooldownTime)
     }
 
-    fun isUpdateButtonEnabled(): Boolean {
-        return isManualKeyRetrievalEnabled
-    }
+    fun isUpdateButtonEnabled(): Boolean = isManualKeyRetrievalEnabled
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsState.kt
index a32b4f8ec1ba8b7dae8747140c9ca83307ab5715..7db5aa19ca115756fded302a59c5a9d75eebb66c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsState.kt
@@ -4,13 +4,14 @@ import android.content.Context
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskLevelConstants
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.tracing.TracingProgress
 import de.rki.coronawarnapp.ui.tracing.common.BaseTracingState
 import java.util.Date
 
 data class TracingDetailsState(
     override val tracingStatus: GeneralTracingStatus.Status,
     override val riskLevelScore: Int,
-    override val isRefreshing: Boolean,
+    override val tracingProgress: TracingProgress,
     override val lastRiskLevelScoreCalculated: Int,
     override val matchedKeyCount: Int,
     override val daysSinceLastExposure: Int,
@@ -110,9 +111,7 @@ data class TracingDetailsState(
      * Formats the risk logged period card text display of tracing active duration in days depending on risk level
      * Displayed in case riskLevel is High and Low level
      */
-    fun getRiskActiveTracingDaysInRetentionPeriodLogged(c: Context): String {
-        return c.getString(
-            R.string.risk_details_information_body_period_logged_assessment
-        ).format(activeTracingDaysInRetentionPeriod)
-    }
+    fun getRiskActiveTracingDaysInRetentionPeriodLogged(c: Context): String = c.getString(
+        R.string.risk_details_information_body_period_logged_assessment
+    ).format(activeTracingDaysInRetentionPeriod)
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateProvider.kt
index 61627a9a7fe99fa1d3a8d610a9e5562196adef8e..f07401a32682540a0227eaacdc45e854a11d78df 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateProvider.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateProvider.kt
@@ -29,7 +29,7 @@ class TracingDetailsStateProvider @Inject constructor(
         tracingStatus.generalStatus,
         RiskLevelRepository.riskLevelScore,
         RiskLevelRepository.riskLevelScoreLastSuccessfulCalculated,
-        tracingRepository.isRefreshing,
+        tracingRepository.tracingProgress,
         ExposureSummaryRepository.matchedKeyCount,
         ExposureSummaryRepository.daysSinceLastExposure,
         tracingRepository.activeTracingDaysInRetentionPeriod,
@@ -40,7 +40,8 @@ class TracingDetailsStateProvider @Inject constructor(
     ) { status,
         riskLevelScore,
         riskLevelScoreLastSuccessfulCalculated,
-        isRefreshing, matchedKeyCount,
+        tracingProgress,
+        matchedKeyCount,
         daysSinceLastExposure, activeTracingDaysInRetentionPeriod,
         lastTimeDiagnosisKeysFetched,
         isBackgroundJobEnabled,
@@ -58,7 +59,7 @@ class TracingDetailsStateProvider @Inject constructor(
         TracingDetailsState(
             tracingStatus = status,
             riskLevelScore = riskLevelScore,
-            isRefreshing = isRefreshing,
+            tracingProgress = tracingProgress,
             lastRiskLevelScoreCalculated = riskLevelScoreLastSuccessfulCalculated,
             matchedKeyCount = matchedKeyCount,
             daysSinceLastExposure = daysSinceLastExposure,
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_home.xml b/Corona-Warn-App/src/main/res/layout/fragment_home.xml
index 2ea113515fa864e6a6540dd062f1d9b0f0eecc07..7b1ebe31b0827c9348ff30a200343aaeb80fc6b3 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_home.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_home.xml
@@ -126,17 +126,26 @@
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/main_tracing" />
 
-            <include
-                android:id="@+id/main_risk"
-                layout="@layout/include_risk_card"
-                android:layout_width="@dimen/match_constraint"
+            <FrameLayout
+                android:id="@+id/risk_card"
+                style="@style/card"
+                gone="@{tracingCard == null || submissionCard == null || !submissionCard.isRiskCardVisible()}"
+                android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_small"
-                gone="@{tracingCard == null || submissionCard == null || !submissionCard.isRiskCardVisible()}"
+                android:focusable="true"
+                android:backgroundTint="@{tracingCard.getRiskInfoContainerBackgroundTint(context)}"
+                android:backgroundTintMode="src_over"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
-                app:layout_constraintTop_toBottomOf="@+id/main_tracing_divider"
-                app:tracingCard="@{tracingCard}" />
+                app:layout_constraintTop_toBottomOf="@+id/main_tracing_divider">
+
+                <include
+                    android:id="@+id/risk_card_content"
+                    layout="@layout/include_risk_card_content"
+                    app:tracingCard="@{tracingCard}" />
+
+            </FrameLayout>
 
             <!-- submission status cards -->
             <include
@@ -148,7 +157,7 @@
                 gone="@{submissionCard == null || !submissionCard.isUnregisteredCardVisible()}"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
-                app:layout_constraintTop_toBottomOf="@id/main_risk" />
+                app:layout_constraintTop_toBottomOf="@id/risk_card" />
 
             <include
                 android:id="@+id/main_test_result"
@@ -224,7 +233,7 @@
                 app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
                 app:layout_constraintTop_toBottomOf="@+id/main_barrier"
                 app:layout_constraintBottom_toBottomOf="@+id/guideline_bottom"
-                app:layout_constraintVertical_bias="0.0"/>
+                app:layout_constraintVertical_bias="0.0" />
 
             <include layout="@layout/merge_guidelines_side" />
 
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml
index 9a0c92b64b365195ce1ccb6c7508f0168a2dac14..b2248af9e91c92aa79909b8c7c3aa78d36bee227 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml
@@ -26,8 +26,9 @@
             android:id="@+id/risk_details_header"
             android:layout_width="match_parent"
             android:layout_height="@dimen/header"
-            android:background="@{tracingDetails.getRiskShape(context)}"
-            android:backgroundTint="@{tracingDetails.getRiskColorStateList(context)}"
+            android:background="@drawable/rectangle"
+            android:backgroundTint="@{tracingDetails.getRiskColor(context)}"
+            android:backgroundTintMode="src_over"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent">
@@ -99,17 +100,25 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 
-                <include
-                    android:id="@+id/risk_details_risk_card"
-                    layout="@layout/include_risk_card"
+                <FrameLayout
+                    android:id="@+id/risk_card"
+                    gone="@{tracingCard == null}"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:focusable="false"
-                    gone="@{tracingCard == null}"
+                    android:background="@drawable/rectangle"
+                    android:backgroundTint="@{tracingCard.getRiskInfoContainerBackgroundTint(context)}"
+                    android:backgroundTintMode="src_over"
+                    android:padding="@dimen/spacing_normal"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
-                    app:tracingCard="@{tracingCard}" />
+                    app:layout_constraintTop_toTopOf="parent">
+
+                    <include
+                        android:id="@+id/risk_card_content"
+                        layout="@layout/include_risk_card_content"
+                        app:tracingCard="@{tracingCard}" />
+
+                </FrameLayout>
 
                 <include
                     android:id="@+id/risk_details_additional_information"
@@ -119,7 +128,7 @@
                     android:focusable="false"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/risk_details_risk_card"
+                    app:layout_constraintTop_toBottomOf="@id/risk_card"
                     gone="@{!tracingDetails.isAdditionalInformationVisible}" />
 
                 <TextView
diff --git a/Corona-Warn-App/src/main/res/layout/include_risk_card.xml b/Corona-Warn-App/src/main/res/layout/include_risk_card_content.xml
similarity index 62%
rename from Corona-Warn-App/src/main/res/layout/include_risk_card.xml
rename to Corona-Warn-App/src/main/res/layout/include_risk_card_content.xml
index e107153298fe413617c962de6ce0563e417681b4..bcbad4136a1425ebd1944300bc65b678a808e89b 100644
--- a/Corona-Warn-App/src/main/res/layout/include_risk_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_risk_card_content.xml
@@ -1,281 +1,287 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <data>
+
         <variable
             name="tracingCard"
             type="de.rki.coronawarnapp.ui.tracing.card.TracingCardState" />
     </data>
 
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/risk_card"
-        style="@style/card"
+    <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@{tracingCard.getRiskShape(context)}"
-        android:backgroundTint="@{tracingCard.getRiskColorStateList(context)}"
-        android:focusable="true">
+        tools:background="@drawable/rectangle"
+        tools:backgroundTint="@color/card_low"
+        tools:padding="@dimen/spacing_normal">
 
         <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/risk_card_header"
-            android:layout_width="@dimen/match_constraint"
+            gone="@{tracingCard == null || !tracingCard.isTracingInProgress()}"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
+            app:layout_constraintTop_toTopOf="parent"
+            tools:visibility="gone">
 
             <TextView
-                android:id="@+id/risk_card_header_headline"
-                android:accessibilityHeading="true"
+                android:id="@+id/risk_card_progress_headline"
                 style="@style/headline5"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginEnd="@dimen/spacing_normal"
-                android:text="@{tracingCard.getRiskLevelHeadline(context)}"
-                android:textColor="@{tracingCard.getStableTextColor(context)}"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toStartOf="@+id/risk_card_header_icon"
+                android:layout_marginEnd="16dp"
+                android:accessibilityHeading="true"
+                android:text="@{tracingCard.getProgressCardHeadline(context)}"
+                android:textColor="@color/colorStableLight"
+                app:layout_constraintEnd_toStartOf="@+id/risk_card_progress_headline_icon"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_goneMarginEnd="0dp"
+                tools:text="Daten werden herunter geladen" />
 
             <ImageView
-                android:id="@+id/risk_card_header_icon"
+                android:id="@+id/risk_card_progress_headline_icon"
+                gone="@{tracingCard.showDetails}"
                 android:layout_width="@dimen/icon_size_risk_card"
                 android:layout_height="@dimen/icon_size_risk_card"
                 android:importantForAccessibility="no"
                 android:src="@drawable/ic_forward"
-                android:tint="@{tracingCard.getStableTextColor(context)}"
-                gone="@{tracingCard.showDetails}"
+                android:tint="@color/colorStableLight"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-        <!-- Loading State -->
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="@dimen/match_constraint"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="@dimen/spacing_normal"
-            gone="@{!tracingCard.refreshing}"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/risk_card_header">
-
             <ProgressBar
-                android:id="@+id/risk_card_progress"
+                android:id="@+id/risk_card_progress_indicator"
                 style="@style/progressBar"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="@dimen/spacing_small"
+                android:layout_width="36dp"
+                android:layout_height="36dp"
                 android:indeterminate="true"
-                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintBottom_toBottomOf="@+id/textView2"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
+                app:layout_constraintTop_toTopOf="@+id/textView2" />
 
             <TextView
+                android:id="@+id/textView2"
                 style="@style/subtitle"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/spacing_small"
-                android:text="@string/risk_card_loading_body"
-                android:textColor="@{tracingCard.getStableTextColor(context)}"
+                android:layout_marginTop="24dp"
+                android:text="@{tracingCard.getProgressCardBody(context)}"
+                android:textColor="@color/colorStableLight"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toEndOf="@id/risk_card_progress"
-                app:layout_constraintTop_toTopOf="parent" />
+                app:layout_constraintStart_toEndOf="@id/risk_card_progress_indicator"
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_progress_headline"
+                tools:text="Es werden aktuelle Daten heruntergeladen. Dies kann mehrere Minuten dauern." />
+
         </androidx.constraintlayout.widget.ConstraintLayout>
 
-        <!-- Card Content -->
         <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            gone="@{tracingCard.refreshing}"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/risk_card_header">
+            android:id="@+id/risk_card_content"
+            gone="@{tracingCard == null || tracingCard.isTracingInProgress()}"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:id="@+id/risk_card_header_headline"
+                style="@style/headline5"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginEnd="16dp"
+                android:accessibilityHeading="true"
+                android:text="@{tracingCard.getRiskLevelHeadline(context)}"
+                android:textColor="@{tracingCard.getStableTextColor(context)}"
+                app:layout_constraintEnd_toStartOf="@+id/risk_card_header_icon"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_goneMarginEnd="0dp"
+                tools:text="@string/risk_card_low_risk_headline"
+                tools:textColor="@color/colorStableLight" />
+
+            <ImageView
+                android:id="@+id/risk_card_header_icon"
+                gone="@{tracingCard.showDetails}"
+                android:layout_width="@dimen/icon_size_risk_card"
+                android:layout_height="@dimen/icon_size_risk_card"
+                android:importantForAccessibility="no"
+                tools:tint="@color/colorStableLight"
+                android:src="@drawable/ic_forward"
+                android:tint="@{tracingCard.getStableTextColor(context)}"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
 
             <TextView
                 android:id="@+id/risk_card_body"
                 style="@style/subtitle"
+                gone="@{tracingCard.getRiskBody(context).empty}"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:text="@{tracingCard.getRiskBody(context)}"
                 android:textColor="@{tracingCard.getStableTextColor(context)}"
-                gone="@{tracingCard.getRiskBody(context).empty}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_header_headline"
+                tools:text="@string/risk_card_outdated_risk_body"
+                tools:textColor="@color/colorStableLight" />
 
             <include
                 android:id="@+id/risk_card_row_saved_risk"
-                layout="@layout/include_risk_card_row"
+                gone="@{tracingCard.getSavedRiskBody(context).empty}"
+                layout="@layout/include_risk_card_content_row"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_small"
-                gone="@{tracingCard.getSavedRiskBody(context).empty}"
                 app:body="@{tracingCard.getSavedRiskBody(context)}"
+                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}"
                 app:icon="@{@drawable/ic_risk_card_saved_risk}"
+                app:iconTint="@{tracingCard.getStableIconColor(context)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_body"
-                app:iconTint="@{tracingCard.getStableIconColor(context)}"
-                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_body" />
 
             <include
                 android:id="@+id/risk_card_row_contact"
-                layout="@layout/include_risk_card_row"
+                gone="@{tracingCard.getRiskContactBody(context).empty}"
+                layout="@layout/include_risk_card_content_row"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                gone="@{tracingCard.getRiskContactBody(context).empty}"
                 app:body="@{tracingCard.getRiskContactBody(context)}"
+                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}"
                 app:icon="@{tracingCard.getRiskContactIcon(context)}"
+                app:iconTint="@{tracingCard.getStableIconColor(context)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_saved_risk"
-                app:iconTint="@{tracingCard.getStableIconColor(context)}"
-                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_saved_risk" />
 
             <include
                 android:id="@+id/risk_card_row_contact_last"
-                layout="@layout/include_risk_card_row"
+                gone="@{tracingCard.getRiskContactLast(context).empty}"
+                layout="@layout/include_risk_card_content_row"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_tiny"
-                gone="@{tracingCard.getRiskContactLast(context).empty}"
                 app:body="@{tracingCard.getRiskContactLast(context)}"
+                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}"
                 app:icon="@{@drawable/ic_risk_card_calendar}"
+                app:iconTint="@{tracingCard.getStableIconColor(context)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_contact"
-                app:iconTint="@{tracingCard.getStableIconColor(context)}"
-                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_contact" />
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:id="@+id/risk_card_row_saved_days"
+                gone="@{tracingCard.getRiskActiveTracingDaysInRetentionPeriod(context).empty}"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_tiny"
-                gone="@{tracingCard.getRiskActiveTracingDaysInRetentionPeriod(context).empty}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/risk_card_row_contact_last">
 
-
-                <androidx.constraintlayout.widget.ConstraintLayout
+                <de.rki.coronawarnapp.ui.view.CircleProgress
                     android:id="@+id/risk_card_row_saved_days_circle_progress"
-                    android:layout_width="@dimen/icon_size_risk_card"
-                    android:layout_height="@dimen/icon_size_risk_card"
-                    app:layout_constraintBottom_toBottomOf="parent"
+                    android:layout_width="@dimen/circle_small"
+                    android:layout_height="@dimen/circle_small"
+                    android:layout_marginStart="8dp"
+                    app:circleColor="@color/colorStableHairlineLight"
+                    app:circleWidth="@dimen/circle_small_width"
+                    app:disableText="true"
+                    app:layout_constraintBottom_toBottomOf="@+id/risk_card_row_saved_days_body"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent">
-
-                    <de.rki.coronawarnapp.ui.view.CircleProgress
-                        android:layout_width="@dimen/circle_small"
-                        android:layout_height="@dimen/circle_small"
-                        app:circleColor="@color/colorStableHairlineLight"
-                        app:circleWidth="@dimen/circle_small_width"
-                        app:disableText="true"
-                        app:layout_constraintBottom_toBottomOf="parent"
-                        app:layout_constraintEnd_toEndOf="parent"
-                        app:layout_constraintStart_toStartOf="parent"
-                        app:layout_constraintTop_toTopOf="parent"
-                        app:progress="@{tracingCard.activeTracingDaysInRetentionPeriod}"
-                        app:progressColor="@color/colorStableLight" />
-
-                </androidx.constraintlayout.widget.ConstraintLayout>
+                    app:layout_constraintTop_toTopOf="@+id/risk_card_row_saved_days_body"
+                    app:progress="@{tracingCard.activeTracingDaysInRetentionPeriod}"
+                    app:progressColor="@color/colorStableLight" />
 
                 <TextView
                     android:id="@+id/risk_card_row_saved_days_body"
                     style="@style/subtitle"
                     android:layout_width="@dimen/match_constraint"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="@dimen/spacing_small"
+                    android:layout_marginStart="24dp"
                     android:text="@{tracingCard.getRiskActiveTracingDaysInRetentionPeriod(context)}"
                     android:textColor="@{tracingCard.getStableTextColor(context)}"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toEndOf="@+id/risk_card_row_saved_days_circle_progress"
-                    app:layout_constraintTop_toTopOf="parent" />
+                    app:layout_constraintTop_toTopOf="parent"
+                    tools:text="@string/risk_card_body_saved_days"
+                    tools:textColor="@color/colorStableLight" />
             </androidx.constraintlayout.widget.ConstraintLayout>
 
             <include
                 android:id="@+id/risk_card_row_time_fetched"
-                layout="@layout/include_risk_card_row"
+                gone="@{tracingCard.getTimeFetched(context).empty}"
+                layout="@layout/include_risk_card_content_row"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_tiny"
-                gone="@{tracingCard.getTimeFetched(context).empty}"
                 app:body="@{tracingCard.getTimeFetched(context)}"
+                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}"
                 app:icon="@{@drawable/ic_risk_card_time_fetched}"
+                app:iconTint="@{tracingCard.getStableIconColor(context)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_saved_days"
-                app:iconTint="@{tracingCard.getStableIconColor(context)}"
-                app:bodyTextColor="@{tracingCard.getStableTextColor(context)}" />
-
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_saved_days" />
 
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/risk_card_next_update"
+            <include
+                android:id="@+id/risk_card_next_update_divider"
+                gone="@{tracingCard.getNextUpdate(context).empty}"
+                layout="@layout/include_divider"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                gone="@{tracingCard.getNextUpdate(context).empty}"
+                app:dividerColor="@{tracingCard.getStableDividerColor(context)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_time_fetched">
-
-                <include
-                    android:id="@+id/risk_card_next_update_divider"
-                    layout="@layout/include_divider"
-                    android:layout_width="@dimen/match_constraint"
-                    android:layout_height="wrap_content"
-                    app:dividerColor="@{tracingCard.getStableDividerColor(context)}"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-                <TextView
-                    style="@style/body2"
-                    android:layout_width="@dimen/match_constraint"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/spacing_small"
-                    android:text="@{tracingCard.getNextUpdate(context)}"
-                    android:textColor="@{tracingCard.getStableTextColor(context)}"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/risk_card_next_update_divider" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_row_time_fetched" />
 
-            </androidx.constraintlayout.widget.ConstraintLayout>
+            <TextView
+                android:id="@+id/risk_card_next_update_test"
+                style="@style/body2"
+                gone="@{tracingCard.getNextUpdate(context).empty}"
+                android:layout_width="@dimen/match_constraint"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_small"
+                android:text="@{tracingCard.getNextUpdate(context)}"
+                android:textColor="@{tracingCard.getStableTextColor(context)}"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_next_update_divider"
+                tools:text="@string/risk_card_body_next_update"
+                tools:textColor="@color/colorStableLight" />
 
             <Button
                 android:id="@+id/risk_card_button_enable_tracing"
                 style="@style/buttonPrimary"
+                gone="@{!tracingCard.showTracingButton()}"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:text="@string/risk_details_button_enable_tracing"
-                gone="@{!tracingCard.showTracingButton()}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_next_update" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_next_update_test" />
 
             <Button
                 android:id="@+id/risk_card_button_update"
                 style="@style/buttonLight"
+                gone="@{!tracingCard.showUpdateButton()}"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:enabled="@{tracingCard.isUpdateButtonEnabled()}"
                 android:text="@{tracingCard.getUpdateButtonText(context)}"
-                gone="@{!tracingCard.showUpdateButton()}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/risk_card_button_enable_tracing" />
+                app:layout_constraintTop_toBottomOf="@+id/risk_card_button_enable_tracing"
+                tools:text="@string/risk_card_button_cooldown" />
 
         </androidx.constraintlayout.widget.ConstraintLayout>
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
+    </FrameLayout>
 </layout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/include_risk_card_row.xml b/Corona-Warn-App/src/main/res/layout/include_risk_card_content_row.xml
similarity index 81%
rename from Corona-Warn-App/src/main/res/layout/include_risk_card_row.xml
rename to Corona-Warn-App/src/main/res/layout/include_risk_card_content_row.xml
index b1f8d63b9b0f460f3b59a8371e3c74164ad1221f..3b737e44fc12ad9fdab89a123ba4d93afe7b8983 100644
--- a/Corona-Warn-App/src/main/res/layout/include_risk_card_row.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_risk_card_content_row.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <data>
 
@@ -35,7 +36,8 @@
             android:tint="@{iconTint}"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toTopOf="parent"
+            tools:src="@drawable/ic_risk_details_home" />
 
         <TextView
             android:id="@+id/risk_card_row_body"
@@ -48,6 +50,8 @@
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toEndOf="@+id/risk_card_row_icon"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toTopOf="parent"
+            tools:text="@string/lorem_ipsum"
+            tools:textColor="@color/colorStableLight" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-bg/strings.xml b/Corona-Warn-App/src/main/res/values-bg/strings.xml
index 5fca95bfdd7b62bd3652c957216e21d2feb5fe90..69e61ed8c37bff18e8beed68c58cfe761af180ce 100644
--- a/Corona-Warn-App/src/main/res/values-bg/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-bg/strings.xml
@@ -192,10 +192,6 @@
     <string name="risk_card_outdated_risk_body">"Регистърът на излаганията на риск не е обновяван повече от 24 часа."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Вашият статус на риск не е обновяван от повече от 48 часа. Моля, актуализирайте го."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Извършва се проверка..."</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Актуалните данни се свалят и проверяват. Това може да отнеме няколко минути."</string>
 
     <!-- ####################################
                     Main
diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml
index 58c5bc21d79868d0eab98c290b71b9f60bb8e54b..eabf99c51f22ddf78ef6b6d8d401493f3c881975 100644
--- a/Corona-Warn-App/src/main/res/values-de/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/strings.xml
@@ -193,10 +193,19 @@
     <string name="risk_card_outdated_risk_body">"Ihre Risiko-Ermittlung konnte seit mehr als 24 Stunden nicht aktualisiert werden."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Ihr Risikostatus wurde seit mehr als 48 Stunden nicht aktualisiert. Bitte aktualisieren Sie Ihren Risikostatus."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Prüfung läuft …"</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Es werden aktuelle Daten heruntergeladen und geprüft. Dies kann mehrere Minuten dauern."</string>
+
+    <!-- ####################################
+              Risk Card - Progress
+    ###################################### -->
+
+    <!-- XHED: risk card - progress - progress card headline displayed downloading key packages -->
+    <string name="risk_card_progress_download_headline">"Daten werden heruntergeladen…"</string>
+    <!-- XTXT: risk card - progress - progress card body displayed downloading key packages -->
+    <string name="risk_card_progress_download_body">"Das kann mehrere Minuten dauern. Vielen Dank für Ihre Geduld."</string>
+    <!-- XHED: risk card - progress - progress card headline displayed calculating the risklevel -->
+    <string name="risk_card_progress_calculation_headline">"Prüfung läuft…"</string>
+    <!-- XTXT: risk card - progress - progress card body displayed calculating the risklevel -->
+    <string name="risk_card_progress_calculation_body">"Ihre Begegnungsdaten werden nun geprüft. Das kann mehrere Minuten dauern. Vielen Dank für Ihre Geduld."</string>
 
     <!-- ####################################
                     Main
diff --git a/Corona-Warn-App/src/main/res/values-en/strings.xml b/Corona-Warn-App/src/main/res/values-en/strings.xml
index c86de9ba77b4d091dff59c7d397f628f8bed994e..62d0aea4b86c8678451bce00eebe5fd8036bf716 100644
--- a/Corona-Warn-App/src/main/res/values-en/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-en/strings.xml
@@ -192,10 +192,6 @@
     <string name="risk_card_outdated_risk_body">"Your exposure logging could not be updated for more than 24 hours."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Your risk status has not been updated for more than 48 hours. Please update your risk status."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Check is running…"</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Current data is being downloaded and checked. This may take several minutes."</string>
 
     <!-- ####################################
                     Main
diff --git a/Corona-Warn-App/src/main/res/values-pl/strings.xml b/Corona-Warn-App/src/main/res/values-pl/strings.xml
index a089fa3eb64d3165c8151a1c858ee408e923539d..da52edfad3b2e3300434cb1cd6be7572d1d922df 100644
--- a/Corona-Warn-App/src/main/res/values-pl/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-pl/strings.xml
@@ -192,10 +192,6 @@
     <string name="risk_card_outdated_risk_body">"Rejestrowanie narażenia nie mogło zostać zaktualizowane przez okres dłuższy niż 24 godziny."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Twój status ryzyka nie był aktualizowany od ponad 48 godzin. Zaktualizuj swój status ryzyka."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Sprawdzanie w toku..."</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Bieżące dane są pobierane i sprawdzane. Może to potrwać kilka minut."</string>
 
     <!-- ####################################
                     Main
diff --git a/Corona-Warn-App/src/main/res/values-ro/strings.xml b/Corona-Warn-App/src/main/res/values-ro/strings.xml
index a3e5fa6dc57e3b467fe6734de706e8b3aa99efd5..2d7638c5d3ecce991c6c26dff850ce54cc11e03d 100644
--- a/Corona-Warn-App/src/main/res/values-ro/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-ro/strings.xml
@@ -192,10 +192,6 @@
     <string name="risk_card_outdated_risk_body">"Înregistrarea în jurnal a expunerilor dvs. nu a putut fi actualizată timp de peste 24 de ore."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Starea riscului dvs. nu a fost actualizată timp de peste 48 de ore. Vă rugăm să activați starea riscului dvs."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Verificarea este în curs…"</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Datele curente sunt în curs de descărcare și verificare. Aceasta poate dura mai multe minute."</string>
 
     <!-- ####################################
                     Main
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 a1a5c7199475c6c04bbcd3b7dce85cc3a2511263..4a1c6803e8217849d9b36236ec65316d20d759d9 100644
--- a/Corona-Warn-App/src/main/res/values-tr/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-tr/strings.xml
@@ -192,10 +192,6 @@
     <string name="risk_card_outdated_risk_body">"Maruz kalma günlüğünüz 24 saatten uzun süre için güncellenemedi."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Risk durumunuz 48 saatten uzun süredir güncellenmedi. Lütfen risk durumunuzu güncelleyin."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Kontrol devam ediyor…"</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Güncel veriler indiriliyor ve kaydediliyor. Bu işlem birkaç dakika sürebilir."</string>
 
     <!-- ####################################
                     Main
diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml
index 89a3039fb4d9f84b4eb1233179d7fb52f930d519..e7d87358a52e3f015f07e5a4229e4e5af6a48ff0 100644
--- a/Corona-Warn-App/src/main/res/values/strings.xml
+++ b/Corona-Warn-App/src/main/res/values/strings.xml
@@ -199,10 +199,19 @@
     <string name="risk_card_outdated_risk_body">"Your exposure logging could not be updated for more than 24 hours."</string>
     <!-- XTXT: risk card - outdated risk manual, calculation couldn't be updated in the last 48 hours -->
     <string name="risk_card_outdated_manual_risk_body">"Your risk status has not been updated for more than 48 hours. Please update your risk status."</string>
-    <!-- XHED: risk card - loading headline, update is ongoing -->
-    <string name="risk_card_loading_headline">"Check is running…"</string>
-    <!-- XTXT: risk card - loading, data is downloaded and will be checked, this can take several minutes -->
-    <string name="risk_card_loading_body">"Current data is being downloaded and checked. This may take several minutes."</string>
+
+    <!-- ####################################
+                  Risk Card - Progress
+    ###################################### -->
+
+    <!-- XHED: risk card - progress - progress card headline displayed downloading key packages -->
+    <string name="risk_card_progress_download_headline">""</string>
+    <!-- XTXT: risk card - progress - progress card body displayed downloading key packages -->
+    <string name="risk_card_progress_download_body">""</string>
+    <!-- XHED: risk card - progress - progress card headline displayed calculating the risklevel -->
+    <string name="risk_card_progress_calculation_headline">""</string>
+    <!-- XTXT: risk card - progress - progress card body displayed calculating the risklevel -->
+    <string name="risk_card_progress_calculation_body">""</string>
 
     <!-- ####################################
                     Main
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateTest.kt
index aba526c2fa140e503916abc9081b9990927d31f6..a6d95594651ced9e26de4315ad9ee6cdb87efe6c 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateTest.kt
@@ -9,12 +9,14 @@ import de.rki.coronawarnapp.risk.RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRAC
 import de.rki.coronawarnapp.risk.RiskLevelConstants.UNKNOWN_RISK_INITIAL
 import de.rki.coronawarnapp.risk.RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.tracing.TracingProgress
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
 import io.mockk.impl.annotations.MockK
 import io.mockk.mockk
 import io.mockk.verify
+import io.mockk.verifySequence
 import org.junit.jupiter.api.AfterEach
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
@@ -38,7 +40,7 @@ class TracingCardStateTest : BaseTest() {
     private fun createInstance(
         tracingStatus: GeneralTracingStatus.Status = mockk(),
         riskLevel: Int = 0,
-        isRefreshing: Boolean = false,
+        tracingProgress: TracingProgress = TracingProgress.Idle,
         riskLevelLastSuccessfulCalculation: Int = 0,
         matchedKeyCount: Int = 0,
         daysSinceLastExposure: Int = 0,
@@ -50,7 +52,7 @@ class TracingCardStateTest : BaseTest() {
     ) = TracingCardState(
         tracingStatus = tracingStatus,
         riskLevelScore = riskLevel,
-        isRefreshing = isRefreshing,
+        tracingProgress = tracingProgress,
         lastRiskLevelScoreCalculated = riskLevelLastSuccessfulCalculation,
         matchedKeyCount = matchedKeyCount,
         daysSinceLastExposure = daysSinceLastExposure,
@@ -92,27 +94,27 @@ class TracingCardStateTest : BaseTest() {
     @Test
     fun `risklevel affects riskcolors`() {
         createInstance(riskLevel = INCREASED_RISK).apply {
-            getRiskColorStateList(context)
+            getRiskInfoContainerBackgroundTint(context)
             verify { context.getColorStateList(R.color.card_increased) }
         }
 
         createInstance(riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS).apply {
-            getRiskColorStateList(context)
+            getRiskInfoContainerBackgroundTint(context)
             verify { context.getColorStateList(R.color.card_outdated) }
         }
 
         createInstance(riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF).apply {
-            getRiskColorStateList(context)
+            getRiskInfoContainerBackgroundTint(context)
             verify { context.getColorStateList(R.color.card_no_calculation) }
         }
 
         createInstance(riskLevel = LOW_LEVEL_RISK).apply {
-            getRiskColorStateList(context)
+            getRiskInfoContainerBackgroundTint(context)
             verify { context.getColorStateList(R.color.card_low) }
         }
 
         createInstance(riskLevel = UNKNOWN_RISK_INITIAL).apply {
-            getRiskColorStateList(context)
+            getRiskInfoContainerBackgroundTint(context)
             verify { context.getColorStateList(R.color.card_unknown) }
         }
     }
@@ -148,31 +150,36 @@ class TracingCardStateTest : BaseTest() {
     fun `saved risk body is affected by risklevel`() {
         createInstance(
             riskLevel = INCREASED_RISK,
-            riskLevelLastSuccessfulCalculation = 0).apply {
+            riskLevelLastSuccessfulCalculation = 0
+        ).apply {
             getSavedRiskBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            riskLevelLastSuccessfulCalculation = 0).apply {
+            riskLevelLastSuccessfulCalculation = 0
+        ).apply {
             getSavedRiskBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            riskLevelLastSuccessfulCalculation = 0).apply {
+            riskLevelLastSuccessfulCalculation = 0
+        ).apply {
             getSavedRiskBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            riskLevelLastSuccessfulCalculation = 0).apply {
+            riskLevelLastSuccessfulCalculation = 0
+        ).apply {
             getSavedRiskBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            riskLevelLastSuccessfulCalculation = 0).apply {
+            riskLevelLastSuccessfulCalculation = 0
+        ).apply {
             getSavedRiskBody(context) shouldBe ""
         }
 
@@ -216,9 +223,11 @@ class TracingCardStateTest : BaseTest() {
             riskLevelLastSuccessfulCalculation = LOW_LEVEL_RISK
         ).apply {
             getSavedRiskBody(context)
-            verify { context
-                .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
-                .format(context.getString(R.string.risk_card_low_risk_headline)) }
+            verify {
+                context
+                    .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
+                    .format(context.getString(R.string.risk_card_low_risk_headline))
+            }
         }
 
         createInstance(
@@ -226,9 +235,11 @@ class TracingCardStateTest : BaseTest() {
             riskLevelLastSuccessfulCalculation = INCREASED_RISK
         ).apply {
             getSavedRiskBody(context)
-            verify { context
-                .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
-                .format(context.getString(R.string.risk_card_increased_risk_headline)) }
+            verify {
+                context
+                    .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
+                    .format(context.getString(R.string.risk_card_increased_risk_headline))
+            }
         }
 
         createInstance(
@@ -236,9 +247,11 @@ class TracingCardStateTest : BaseTest() {
             riskLevelLastSuccessfulCalculation = UNKNOWN_RISK_INITIAL
         ).apply {
             getSavedRiskBody(context)
-            verify { context
-                .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
-                .format(context.getString(R.string.risk_card_unknown_risk_headline)) }
+            verify {
+                context
+                    .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
+                    .format(context.getString(R.string.risk_card_unknown_risk_headline))
+            }
         }
 
         createInstance(
@@ -246,9 +259,11 @@ class TracingCardStateTest : BaseTest() {
             riskLevelLastSuccessfulCalculation = LOW_LEVEL_RISK
         ).apply {
             getSavedRiskBody(context)
-            verify { context
-                .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
-                .format(context.getString(R.string.risk_card_low_risk_headline)) }
+            verify {
+                context
+                    .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
+                    .format(context.getString(R.string.risk_card_low_risk_headline))
+            }
         }
 
         createInstance(
@@ -256,9 +271,11 @@ class TracingCardStateTest : BaseTest() {
             riskLevelLastSuccessfulCalculation = INCREASED_RISK
         ).apply {
             getSavedRiskBody(context)
-            verify { context
-                .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
-                .format(context.getString(R.string.risk_card_increased_risk_headline)) }
+            verify {
+                context
+                    .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
+                    .format(context.getString(R.string.risk_card_increased_risk_headline))
+            }
         }
 
         createInstance(
@@ -266,9 +283,11 @@ class TracingCardStateTest : BaseTest() {
             riskLevelLastSuccessfulCalculation = UNKNOWN_RISK_INITIAL
         ).apply {
             getSavedRiskBody(context)
-            verify { context
-                .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
-                .format(context.getString(R.string.risk_card_unknown_risk_headline)) }
+            verify {
+                context
+                    .getString(R.string.risk_card_no_calculation_possible_body_saved_risk)
+                    .format(context.getString(R.string.risk_card_unknown_risk_headline))
+            }
         }
     }
 
@@ -276,73 +295,87 @@ class TracingCardStateTest : BaseTest() {
     fun `risk contact body is affected by risklevel`() {
         createInstance(
             riskLevel = INCREASED_RISK,
-            matchedKeyCount = 0).apply {
+            matchedKeyCount = 0
+        ).apply {
             getRiskContactBody(context)
             verify { context.getString(R.string.risk_card_body_contact) }
         }
 
         createInstance(
             riskLevel = INCREASED_RISK,
-            matchedKeyCount = 2).apply {
+            matchedKeyCount = 2
+        ).apply {
             getRiskContactBody(context)
-            verify { context.resources.getQuantityString(
-                R.plurals.risk_card_body_contact_value_high_risk,
-                2,
-                2)
+            verify {
+                context.resources.getQuantityString(
+                    R.plurals.risk_card_body_contact_value_high_risk,
+                    2,
+                    2
+                )
             }
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            matchedKeyCount = 0).apply {
+            matchedKeyCount = 0
+        ).apply {
             getRiskContactBody(context)
             verify { context.getString(R.string.risk_card_body_contact) }
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            matchedKeyCount = 2).apply {
+            matchedKeyCount = 2
+        ).apply {
             getRiskContactBody(context)
-            verify { context.resources.getQuantityString(
-                R.plurals.risk_card_body_contact_value,
-                2,
-                2)
+            verify {
+                context.resources.getQuantityString(
+                    R.plurals.risk_card_body_contact_value,
+                    2,
+                    2
+                )
             }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            matchedKeyCount = 0).apply {
+            matchedKeyCount = 0
+        ).apply {
             getRiskContactBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            matchedKeyCount = 0).apply {
+            matchedKeyCount = 0
+        ).apply {
             getRiskContactBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            matchedKeyCount = 0).apply {
+            matchedKeyCount = 0
+        ).apply {
             getRiskContactBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            matchedKeyCount = 2).apply {
+            matchedKeyCount = 2
+        ).apply {
             getRiskContactBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            matchedKeyCount = 2).apply {
+            matchedKeyCount = 2
+        ).apply {
             getRiskContactBody(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            matchedKeyCount = 2).apply {
+            matchedKeyCount = 2
+        ).apply {
             getRiskContactBody(context) shouldBe ""
         }
     }
@@ -379,47 +412,57 @@ class TracingCardStateTest : BaseTest() {
     fun `last risk contact text formatting`() {
         createInstance(
             riskLevel = INCREASED_RISK,
-            daysSinceLastExposure = 2).apply {
+            daysSinceLastExposure = 2
+        ).apply {
             getRiskContactLast(context)
-            verify { context.resources.getQuantityString(
-                R.plurals.risk_card_increased_risk_body_contact_last,
-                2,
-                2)
+            verify {
+                context.resources.getQuantityString(
+                    R.plurals.risk_card_increased_risk_body_contact_last,
+                    2,
+                    2
+                )
             }
         }
 
         createInstance(
             riskLevel = INCREASED_RISK,
-            daysSinceLastExposure = 0).apply {
+            daysSinceLastExposure = 0
+        ).apply {
             getRiskContactLast(context)
-            verify { context.resources.getQuantityString(
-                R.plurals.risk_card_increased_risk_body_contact_last,
-                0,
-                0)
+            verify {
+                context.resources.getQuantityString(
+                    R.plurals.risk_card_increased_risk_body_contact_last,
+                    0,
+                    0
+                )
             }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            daysSinceLastExposure = 2).apply {
+            daysSinceLastExposure = 2
+        ).apply {
             getRiskContactLast(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            daysSinceLastExposure = 2).apply {
+            daysSinceLastExposure = 2
+        ).apply {
             getRiskContactLast(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            daysSinceLastExposure = 2).apply {
+            daysSinceLastExposure = 2
+        ).apply {
             getRiskContactLast(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            daysSinceLastExposure = 2).apply {
+            daysSinceLastExposure = 2
+        ).apply {
             getRiskContactLast(context) shouldBe ""
         }
     }
@@ -428,39 +471,45 @@ class TracingCardStateTest : BaseTest() {
     fun `text for active risktracing in retention period`() {
         createInstance(
             riskLevel = INCREASED_RISK,
-            activeTracingDaysInRetentionPeriod = 1).apply {
+            activeTracingDaysInRetentionPeriod = 1
+        ).apply {
             getRiskActiveTracingDaysInRetentionPeriod(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            activeTracingDaysInRetentionPeriod = 1).apply {
+            activeTracingDaysInRetentionPeriod = 1
+        ).apply {
             getRiskActiveTracingDaysInRetentionPeriod(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            activeTracingDaysInRetentionPeriod = 1).apply {
+            activeTracingDaysInRetentionPeriod = 1
+        ).apply {
             getRiskActiveTracingDaysInRetentionPeriod(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            activeTracingDaysInRetentionPeriod = 1).apply {
+            activeTracingDaysInRetentionPeriod = 1
+        ).apply {
             getRiskActiveTracingDaysInRetentionPeriod(context)
             verify { context.getString(R.string.risk_card_body_saved_days).format(1) }
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            activeTracingDaysInRetentionPeriod = 2).apply {
+            activeTracingDaysInRetentionPeriod = 2
+        ).apply {
             getRiskActiveTracingDaysInRetentionPeriod(context)
             verify { context.getString(R.string.risk_card_body_saved_days).format(2) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            activeTracingDaysInRetentionPeriod = 1).apply {
+            activeTracingDaysInRetentionPeriod = 1
+        ).apply {
             getRiskActiveTracingDaysInRetentionPeriod(context) shouldBe ""
         }
     }
@@ -471,7 +520,8 @@ class TracingCardStateTest : BaseTest() {
         createInstance(
             riskLevel = INCREASED_RISK,
             riskLevelLastSuccessfulCalculation = 2,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(eq(R.string.risk_card_body_time_fetched), any()) }
         }
@@ -479,7 +529,8 @@ class TracingCardStateTest : BaseTest() {
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
             riskLevelLastSuccessfulCalculation = 2,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(eq(R.string.risk_card_body_time_fetched), any()) }
         }
@@ -487,7 +538,8 @@ class TracingCardStateTest : BaseTest() {
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
             riskLevelLastSuccessfulCalculation = 2,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(eq(R.string.risk_card_body_time_fetched), any()) }
         }
@@ -495,7 +547,8 @@ class TracingCardStateTest : BaseTest() {
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
             riskLevelLastSuccessfulCalculation = 2,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(eq(R.string.risk_card_body_time_fetched), any()) }
         }
@@ -503,71 +556,82 @@ class TracingCardStateTest : BaseTest() {
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
             riskLevelLastSuccessfulCalculation = 2,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = INCREASED_RISK,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(eq(R.string.risk_card_body_time_fetched), any()) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(eq(R.string.risk_card_body_time_fetched), any()) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            lastTimeDiagnosisKeysFetched = date).apply {
+            lastTimeDiagnosisKeysFetched = date
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = INCREASED_RISK,
-            lastTimeDiagnosisKeysFetched = null).apply {
+            lastTimeDiagnosisKeysFetched = null
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(R.string.risk_card_body_not_yet_fetched) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            lastTimeDiagnosisKeysFetched = null).apply {
+            lastTimeDiagnosisKeysFetched = null
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            lastTimeDiagnosisKeysFetched = null).apply {
+            lastTimeDiagnosisKeysFetched = null
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            lastTimeDiagnosisKeysFetched = null).apply {
+            lastTimeDiagnosisKeysFetched = null
+        ).apply {
             getTimeFetched(context)
             verify { context.getString(R.string.risk_card_body_not_yet_fetched) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            lastTimeDiagnosisKeysFetched = null).apply {
+            lastTimeDiagnosisKeysFetched = null
+        ).apply {
             getTimeFetched(context) shouldBe ""
         }
     }
@@ -576,63 +640,73 @@ class TracingCardStateTest : BaseTest() {
     fun `text for next update time`() {
         createInstance(
             riskLevel = INCREASED_RISK,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = INCREASED_RISK,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             getNextUpdate(context)
             verify { context.getString(R.string.risk_card_body_next_update) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             getNextUpdate(context) shouldBe ""
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             getNextUpdate(context)
             verify { context.getString(R.string.risk_card_body_next_update) }
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             getNextUpdate(context)
             verify { context.getString(R.string.risk_card_body_next_update) }
         }
@@ -693,135 +767,131 @@ class TracingCardStateTest : BaseTest() {
     fun `update button visibility`() {
         createInstance(
             riskLevel = INCREASED_RISK,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             showUpdateButton() shouldBe true
         }
 
         createInstance(
             riskLevel = INCREASED_RISK,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             showUpdateButton() shouldBe false
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             showUpdateButton() shouldBe false
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             showUpdateButton() shouldBe false
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             showUpdateButton() shouldBe false
         }
 
         createInstance(
             riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             showUpdateButton() shouldBe false
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             showUpdateButton() shouldBe true
         }
 
         createInstance(
             riskLevel = LOW_LEVEL_RISK,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             showUpdateButton() shouldBe false
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            isBackgroundJobEnabled = false).apply {
+            isBackgroundJobEnabled = false
+        ).apply {
             showUpdateButton() shouldBe true
         }
 
         createInstance(
             riskLevel = UNKNOWN_RISK_INITIAL,
-            isBackgroundJobEnabled = true).apply {
+            isBackgroundJobEnabled = true
+        ).apply {
             showUpdateButton() shouldBe false
         }
     }
 
     @Test
-    fun `risklevel headline is affected by score and refreshingstate`() {
-        createInstance(
-            riskLevel = INCREASED_RISK,
-            isRefreshing = false).apply {
+    fun `risklevel headline is affected by score`() {
+        createInstance(riskLevel = INCREASED_RISK).apply {
             getRiskLevelHeadline(context)
             verify { context.getString(R.string.risk_card_increased_risk_headline) }
         }
 
-        createInstance(
-            riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            isRefreshing = false).apply {
+        createInstance(riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS).apply {
             getRiskLevelHeadline(context)
             verify { context.getString(R.string.risk_card_outdated_risk_headline) }
         }
 
-        createInstance(
-            riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            isRefreshing = false).apply {
+        createInstance(riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF).apply {
             getRiskLevelHeadline(context)
             verify { context.getString(R.string.risk_card_no_calculation_possible_headline) }
         }
 
-        createInstance(
-            riskLevel = LOW_LEVEL_RISK,
-            isRefreshing = false).apply {
+        createInstance(riskLevel = LOW_LEVEL_RISK).apply {
             getRiskLevelHeadline(context)
             verify { context.getString(R.string.risk_card_low_risk_headline) }
         }
 
-        createInstance(
-            riskLevel = UNKNOWN_RISK_INITIAL,
-            isRefreshing = false).apply {
+        createInstance(riskLevel = UNKNOWN_RISK_INITIAL).apply {
             getRiskLevelHeadline(context)
             verify { context.getString(R.string.risk_card_unknown_risk_headline) }
         }
 
         createInstance(
-            riskLevel = INCREASED_RISK,
-            isRefreshing = true).apply {
-            getRiskLevelHeadline(context)
-            verify { context.getString(R.string.risk_card_loading_headline) }
-        }
-
-        createInstance(
-            riskLevel = UNKNOWN_RISK_OUTDATED_RESULTS,
-            isRefreshing = true).apply {
-            getRiskLevelHeadline(context)
-            verify { context.getString(R.string.risk_card_loading_headline) }
-        }
-
-        createInstance(
-            riskLevel = NO_CALCULATION_POSSIBLE_TRACING_OFF,
-            isRefreshing = true).apply {
-            getRiskLevelHeadline(context)
-            verify { context.getString(R.string.risk_card_loading_headline) }
-        }
-
-        createInstance(
-            riskLevel = LOW_LEVEL_RISK,
-            isRefreshing = true).apply {
+            riskLevel = UNKNOWN_RISK_INITIAL,
+            tracingProgress = TracingProgress.Downloading
+        ).apply {
             getRiskLevelHeadline(context)
-            verify { context.getString(R.string.risk_card_loading_headline) }
+            verify { context.getString(R.string.risk_card_unknown_risk_headline) }
         }
+    }
 
-        createInstance(
-            riskLevel = UNKNOWN_RISK_INITIAL,
-            isRefreshing = true).apply {
-            getRiskLevelHeadline(context)
-            verify { context.getString(R.string.risk_card_loading_headline) }
+    @Test
+    fun `tracing progress state`() {
+        createInstance(tracingProgress = TracingProgress.Idle).apply {
+            getProgressCardHeadline(context)
+            getProgressCardBody(context)
+            verify(exactly = 0) { context.getString(any()) }
+        }
+        createInstance(tracingProgress = TracingProgress.Downloading).apply {
+            getProgressCardHeadline(context)
+            getProgressCardBody(context)
+        }
+        createInstance(tracingProgress = TracingProgress.ENFIsCalculating).apply {
+            getProgressCardHeadline(context)
+            getProgressCardBody(context)
+        }
+        verifySequence {
+            context.getString(R.string.risk_card_progress_download_headline)
+            context.getString(R.string.risk_card_progress_download_body)
+            context.getString(R.string.risk_card_progress_calculation_headline)
+            context.getString(R.string.risk_card_progress_calculation_body)
         }
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingStateTest.kt
index 7c1f6d463b8eecf2a87722cf225e99993c3b54cc..75687a7d8950be735359262e26f93162fbbd1a87 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingStateTest.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskLevelConstants
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.tracing.TracingProgress
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
@@ -44,7 +45,7 @@ class BaseTracingStateTest : BaseTest() {
     private fun createInstance(
         tracingStatus: GeneralTracingStatus.Status = mockk(),
         riskLevelScore: Int = 0,
-        isRefreshing: Boolean = false,
+        tracingProgress: TracingProgress = TracingProgress.Idle,
         riskLevelLastSuccessfulCalculation: Int = 0,
         matchedKeyCount: Int = 0,
         daysSinceLastExposure: Int = 0,
@@ -57,7 +58,7 @@ class BaseTracingStateTest : BaseTest() {
     ) = object : BaseTracingState() {
         override val tracingStatus: GeneralTracingStatus.Status = tracingStatus
         override val riskLevelScore: Int = riskLevelScore
-        override val isRefreshing: Boolean = isRefreshing
+        override val tracingProgress: TracingProgress = tracingProgress
         override val lastRiskLevelScoreCalculated: Int = riskLevelLastSuccessfulCalculation
         override val matchedKeyCount: Int = matchedKeyCount
         override val daysSinceLastExposure: Int = daysSinceLastExposure
@@ -69,18 +70,6 @@ class BaseTracingStateTest : BaseTest() {
         override val manualKeyRetrievalTime: Long = manualKeyRetrievalTime
     }
 
-    @Test
-    fun `risk card shape`() {
-        createInstance(showDetails = true).apply {
-            getRiskShape(context)
-            verify { context.getDrawable(R.drawable.rectangle) }
-        }
-        createInstance(showDetails = false).apply {
-            getRiskShape(context)
-            verify { context.getDrawable(R.drawable.rectangle) }
-        }
-    }
-
     @Test
     fun `risk color`() {
         createInstance(riskLevelScore = RiskLevelConstants.INCREASED_RISK).apply {
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateTest.kt
index 140638120b09368417ccdd93608f5e707b78b31e..9a22c516dbff73ac424f0d72bb83f95d219ab459 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateTest.kt
@@ -5,6 +5,7 @@ import android.content.res.Resources
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskLevelConstants
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.tracing.TracingProgress
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
@@ -38,7 +39,7 @@ class TracingDetailsStateTest : BaseTest() {
     private fun createInstance(
         tracingStatus: GeneralTracingStatus.Status = mockk(),
         riskLevelScore: Int = 0,
-        isRefreshing: Boolean = false,
+        tracingProgress: TracingProgress = TracingProgress.Idle,
         riskLevelLastSuccessfulCalculation: Int = 0,
         matchedKeyCount: Int = 3,
         daysSinceLastExposure: Int = 2,
@@ -52,7 +53,7 @@ class TracingDetailsStateTest : BaseTest() {
     ) = TracingDetailsState(
         tracingStatus = tracingStatus,
         riskLevelScore = riskLevelScore,
-        isRefreshing = isRefreshing,
+        tracingProgress = tracingProgress,
         lastRiskLevelScoreCalculated = riskLevelLastSuccessfulCalculation,
         matchedKeyCount = matchedKeyCount,
         daysSinceLastExposure = daysSinceLastExposure,