diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle
index 38ce5d0924bf439d02e79b8d87b85ccf0ae25b15..a7429a68792850ee457cd7de0e2208d578015458 100644
--- a/Corona-Warn-App/build.gradle
+++ b/Corona-Warn-App/build.gradle
@@ -19,9 +19,9 @@
 
 apply plugin: 'com.android.application'
 apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
 apply plugin: 'kotlin-kapt'
-apply plugin: "androidx.navigation.safeargs.kotlin"
+apply plugin: 'kotlin-parcelize'
+apply plugin: 'androidx.navigation.safeargs.kotlin'
 apply plugin: 'jacoco'
 
 
diff --git a/Corona-Warn-App/config/detekt.yml b/Corona-Warn-App/config/detekt.yml
index 0e4e6182ac7df20856e94129fe88eae8a0c0921d..d63c3db9e9a17da3cef328daff128d236a51d5f4 100644
--- a/Corona-Warn-App/config/detekt.yml
+++ b/Corona-Warn-App/config/detekt.yml
@@ -630,4 +630,4 @@ style:
   WildcardImport:
     active: true
     excludes: ['**/test/**', '**/androidTest/**', '**/*.Test.kt', '**/*.Spec.kt', '**/*.Spek.kt']
-    excludeImports: ['java.util.*', 'kotlinx.android.synthetic.*']
+    excludeImports: ['java.util.*']
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt
index 4eceee3de10251b93c1c6fd0958b9e8b75f6e5d7..ed36e6276d4349e459baa7180fe60f778c7fd069 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt
@@ -5,7 +5,7 @@ import androidx.room.ColumnInfo
 import androidx.room.Entity
 import androidx.room.PrimaryKey
 import de.rki.coronawarnapp.contactdiary.model.ContactDiaryLocation
-import kotlinx.android.parcel.Parcelize
+import kotlinx.parcelize.Parcelize
 
 @Parcelize
 @Entity(tableName = "locations")
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt
index 62a8c194edc8f4436cf48b79b3e64cce881aa6ea..0d1d1738d28c0b648327e6a18e09212eb752de06 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt
@@ -5,7 +5,7 @@ import androidx.room.ColumnInfo
 import androidx.room.Entity
 import androidx.room.PrimaryKey
 import de.rki.coronawarnapp.contactdiary.model.ContactDiaryPerson
-import kotlinx.android.parcel.Parcelize
+import kotlinx.parcelize.Parcelize
 
 @Parcelize
 @Entity(tableName = "persons")
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt
index 6863750c360eb38c0f6dd1eb39c1d356e07d5fa2..2355eeac7f59f5676dd04b8d173a368225e125f7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt
@@ -3,7 +3,7 @@ package de.rki.coronawarnapp.submission
 import android.os.Parcelable
 import androidx.annotation.Keep
 import com.google.gson.annotations.SerializedName
-import kotlinx.android.parcel.Parcelize
+import kotlinx.parcelize.Parcelize
 import org.joda.time.LocalDate
 
 @Keep
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt
index abb894ec82f7ea59f29b9a1d60a753fd5bc7802e..6dd893521e346fc312766a8f48d479a638aa7269 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt
@@ -7,6 +7,7 @@ import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskState
 import de.rki.coronawarnapp.risk.TimeVariables
 import de.rki.coronawarnapp.tracing.TracingProgress
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.toLocalDate
 import org.joda.time.Instant
 import org.joda.time.format.DateTimeFormat
@@ -212,17 +213,17 @@ data class TracingInProgress(
     fun getStableIconColor(c: Context): Int = when (riskState) {
         RiskState.INCREASED_RISK, RiskState.LOW_RISK -> R.color.colorStableLight
         else -> R.color.colorTextSemanticNeutral
-    }.let { c.getColor(it) }
+    }.let { c.getColorCompat(it) }
 
     fun getStableTextColor(c: Context): Int = when (riskState) {
         RiskState.INCREASED_RISK, RiskState.LOW_RISK -> R.color.colorTextPrimary1InvertedStable
         else -> R.color.colorTextPrimary1
-    }.let { c.getColor(it) }
+    }.let { c.getColorCompat(it) }
 
     @ColorInt
     fun getContainerColor(c: Context): Int = when (riskState) {
         RiskState.INCREASED_RISK -> R.color.colorSemanticHighRisk
         RiskState.LOW_RISK -> R.color.colorSemanticLowRisk
         RiskState.CALCULATION_FAILED -> R.color.colorSemanticUnknownRisk
-    }.let { c.getColor(it) }
+    }.let { c.getColorCompat(it) }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt
index e3a81049a5b4ca5ae2a1e50befe9cad3cfff1060..d3b79ddadc0a1a132866b3bc302992add388a396 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskState
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 
 data class TracingDetailsState(
     val tracingStatus: GeneralTracingStatus.Status,
@@ -16,14 +17,14 @@ data class TracingDetailsState(
         riskState == RiskState.INCREASED_RISK -> R.color.colorSemanticHighRisk
         riskState == RiskState.LOW_RISK -> R.color.colorSemanticLowRisk
         else -> R.color.colorSemanticUnknownRisk
-    }.let { c.getColor(it) }
+    }.let { c.getColorCompat(it) }
 
     fun getStableTextColor(c: Context): Int = when {
         tracingStatus == GeneralTracingStatus.Status.TRACING_INACTIVE -> R.color.colorTextPrimary1
         riskState == RiskState.INCREASED_RISK ||
             riskState == RiskState.LOW_RISK -> R.color.colorTextPrimary1InvertedStable
         else -> R.color.colorTextPrimary1
-    }.let { c.getColor(it) }
+    }.let { c.getColorCompat(it) }
 
     fun isUpdateButtonEnabled(): Boolean = isManualKeyRetrievalEnabled
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt
index 2cbdaede475cf2b13f4d74a5a05406c661225cc6..a1389158a54776c4d43b80e257ab73ff56969564 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt
@@ -9,6 +9,7 @@ import de.rki.coronawarnapp.risk.RiskState
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
 import de.rki.coronawarnapp.tracing.ui.details.TracingDetailsAdapter
 import de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorNormalRiskBox.Item
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 
 class BehaviorNormalRiskBox(
     parent: ViewGroup,
@@ -38,13 +39,13 @@ class BehaviorNormalRiskBox(
             tracingStatus == GeneralTracingStatus.Status.TRACING_INACTIVE -> R.color.colorTextSemanticNeutral
             riskState == RiskState.INCREASED_RISK || riskState == RiskState.LOW_RISK -> R.color.colorStableLight
             else -> R.color.colorTextSemanticNeutral
-        }.let { context.getColor(it) }
+        }.let { context.getColorCompat(it) }
 
         fun getBackgroundColor(context: Context) = when {
             tracingStatus == GeneralTracingStatus.Status.TRACING_INACTIVE -> R.color.colorSurface2
             riskState == RiskState.INCREASED_RISK -> R.color.colorSemanticHighRisk
             riskState == RiskState.LOW_RISK -> R.color.colorSemanticLowRisk
             else -> R.color.colorSurface2
-        }.let { context.getColor(it) }
+        }.let { context.getColorCompat(it) }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt
index 8516ffe18eb9148f0168351a38aba93b828459f9..3c60f441ead97b68d3b3302a1eb2b417207043a4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.tracing.ui.statusbar
 import android.content.Context
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 
 sealed class TracingHeaderState {
     abstract fun getTracingDescription(c: Context): String
@@ -22,7 +23,7 @@ sealed class TracingHeaderState {
         override fun getTracingAnimation(c: Context): Int =
             R.drawable.ic_settings_tracing_bluetooth_inactive
 
-        override fun getTracingTint(c: Context): Int = c.getColor(
+        override fun getTracingTint(c: Context): Int = c.getColorCompat(
             R.color.colorTextSemanticRed
         )
     }
@@ -38,7 +39,7 @@ sealed class TracingHeaderState {
         override fun getTracingAnimation(c: Context): Int =
             R.drawable.ic_settings_location_inactive_small
 
-        override fun getTracingTint(c: Context): Int = c.getColor(
+        override fun getTracingTint(c: Context): Int = c.getColorCompat(
             R.color.colorTextSemanticRed
         )
     }
@@ -54,7 +55,7 @@ sealed class TracingHeaderState {
         override fun getTracingAnimation(c: Context): Int =
             R.drawable.ic_settings_tracing_inactive
 
-        override fun getTracingTint(c: Context): Int = c.getColor(
+        override fun getTracingTint(c: Context): Int = c.getColorCompat(
             R.color.colorTextSemanticRed
         )
     }
@@ -70,7 +71,7 @@ sealed class TracingHeaderState {
         override fun getTracingAnimation(c: Context): Int =
             R.raw.ic_settings_tracing_animated
 
-        override fun getTracingTint(c: Context): Int = c.getColor(
+        override fun getTracingTint(c: Context): Int = c.getColorCompat(
             R.color.colorAccentTintIcon
         )
     }
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 5dc84eb946645dbface83c7a57e8a4e6bed134ad..cf51ffb8764efdf007285b5019bbc3d9bbf52a46 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
@@ -12,6 +12,7 @@ import de.rki.coronawarnapp.contactdiary.ui.ContactDiaryActivity
 import de.rki.coronawarnapp.databinding.HomeFragmentLayoutBinding
 import de.rki.coronawarnapp.tracing.ui.TracingExplanationDialog
 import de.rki.coronawarnapp.ui.main.home.popups.DeviceTimeIncorrectDialog
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.ExternalActionHelper
 import de.rki.coronawarnapp.util.di.AutoInject
@@ -136,7 +137,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
         )
         DialogHelper.showDialog(removeTestDialog).apply {
             getButton(AlertDialog.BUTTON_POSITIVE)
-                .setTextColor(context.getColor(R.color.colorTextSemanticRed))
+                .setTextColor(context.getColorCompat(R.color.colorTextSemanticRed))
         }
     }
 
@@ -152,7 +153,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
         )
 
         DialogHelper.showDialog(riskLevelLoweredDialog).apply {
-            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextTint))
+            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextTint))
         }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt
index f59335d80f368a70ebc9e12254d385fb4cbbe52b..c1af5db433504f3806510a07a03b27022575ffdd 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt
@@ -9,6 +9,7 @@ import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSettingsResetBinding
 import de.rki.coronawarnapp.ui.main.MainActivity
 import de.rki.coronawarnapp.ui.onboarding.OnboardingActivity
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.observe2
@@ -65,7 +66,7 @@ class SettingsResetFragment : Fragment(R.layout.fragment_settings_reset), AutoIn
         )
 
         DialogHelper.showDialog(resetDialog).apply {
-            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed))
+            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed))
         }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt
index 53956bb9083bfed10fea103eea2055a6a2ec1f8d..c484045725f8507569e35b2964e80a236fb5f34f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import android.graphics.drawable.Drawable
 import androidx.annotation.ColorInt
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 
 data class SettingsBackgroundState(
     val isEnabled: Boolean
@@ -13,7 +14,7 @@ data class SettingsBackgroundState(
      * Formats the settings icon color for background priority
      */
     @ColorInt
-    fun getBackgroundPriorityIconColor(c: Context): Int = c.getColor(
+    fun getBackgroundPriorityIconColor(c: Context): Int = c.getColorCompat(
         if (isEnabled) R.color.colorAccentTintIcon
         else R.color.colorTextSemanticRed
     )
@@ -21,7 +22,7 @@ data class SettingsBackgroundState(
     /**
      * Formats the settings icon for background priority
      */
-    fun getBackgroindPriorityIcon(c: Context): Drawable? = c.getDrawable(
+    fun getBackgroundPriorityIcon(c: Context): Drawable? = c.getDrawable(
         if (isEnabled) R.drawable.ic_settings_background_priority_enabled
         else R.drawable.ic_settings_background_priority_disabled
     )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt
index 17f5b0649224db42bb85045bf621e7bcd73581e4..7969efcada37560d624aa4d0a54629f5a8ff145c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import android.graphics.drawable.Drawable
 import androidx.annotation.ColorInt
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 
 data class SettingsNotificationState(
     val isNotificationsEnabled: Boolean,
@@ -19,7 +20,7 @@ data class SettingsNotificationState(
      * Formats the settings icon color for notifications depending on notification values
      */
     @ColorInt
-    fun getNotificationIconColor(c: Context): Int = c.getColor(
+    fun getNotificationIconColor(c: Context): Int = c.getColorCompat(
         if (isEnabled) R.color.colorAccentTintIcon else R.color.colorTextSemanticRed
     )
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt
index 7e494b5946e2693d1d662d614e0c072b7ff44673..3760ac4efe78d327d2351987b3a1b154b225a13d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt
@@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable
 import androidx.annotation.ColorInt
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 
 sealed class SettingsTracingState {
 
@@ -15,7 +16,7 @@ sealed class SettingsTracingState {
 
     object BluetoothDisabled : SettingsTracingState() {
         override fun getTracingIconColor(context: Context): Int =
-            context.getColor(R.color.colorTextSemanticRed)
+            context.getColorCompat(R.color.colorTextSemanticRed)
 
         override fun getTracingIcon(context: Context): Drawable? =
             context.getDrawable(R.drawable.ic_settings_tracing_bluetooth_inactive)
@@ -26,7 +27,7 @@ sealed class SettingsTracingState {
 
     object LocationDisabled : SettingsTracingState() {
         override fun getTracingIconColor(context: Context): Int =
-            context.getColor(R.color.colorTextSemanticRed)
+            context.getColorCompat(R.color.colorTextSemanticRed)
 
         override fun getTracingIcon(context: Context): Drawable? =
             context.getDrawable(R.drawable.ic_settings_location_inactive_small)
@@ -37,7 +38,7 @@ sealed class SettingsTracingState {
 
     object TracingActive : SettingsTracingState() {
         override fun getTracingIconColor(context: Context): Int =
-            context.getColor(R.color.colorAccentTintIcon)
+            context.getColorCompat(R.color.colorAccentTintIcon)
 
         override fun getTracingIcon(context: Context): Drawable? =
             context.getDrawable(R.drawable.ic_settings_tracing_active_small)
@@ -48,7 +49,7 @@ sealed class SettingsTracingState {
 
     object TracingInActive : SettingsTracingState() {
         override fun getTracingIconColor(context: Context): Int =
-            context.getColor(R.color.colorTextSemanticRed)
+            context.getColorCompat(R.color.colorTextSemanticRed)
 
         override fun getTracingIcon(context: Context): Drawable? =
             context.getDrawable(R.drawable.ic_settings_tracing_inactive_small)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt
index 48407a6e17c1e729f2b800eeeef5155f817f9ebf..62f360997e7f2535fa69a6d77c3dfe9ba5cd696f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt
@@ -20,7 +20,6 @@ import de.rki.coronawarnapp.util.ui.setGone
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
-import kotlinx.android.synthetic.main.include_submission_tan.*
 import javax.inject.Inject
 
 /**
@@ -37,27 +36,31 @@ class SubmissionTanFragment : Fragment(R.layout.fragment_submission_tan), AutoIn
         super.onViewCreated(view, savedInstanceState)
 
         viewModel.state.observe2(this) {
-            binding.uiState = it
-
-            submission_tan_character_error.setGone(it.areCharactersCorrect)
-            if (it.isCorrectLength) {
-                submission_tan_error.setGone(it.isTanValid)
-            } else {
-                submission_tan_error.setGone(true)
+            binding.apply {
+                uiState = it
+
+                submissionTanContent.submissionTanCharacterError.setGone(it.areCharactersCorrect)
+                if (it.isCorrectLength) {
+                    submissionTanContent.submissionTanError.setGone(it.isTanValid)
+                } else {
+                    submissionTanContent.submissionTanError.setGone(true)
+                }
             }
         }
 
-        binding.submissionTanContent.submissionTanInput.listener = { tan ->
-            submission_tan_character_error.visibility = View.GONE
-            submission_tan_error.visibility = View.GONE
+        binding.apply {
+            submissionTanContent.submissionTanInput.listener = { tan ->
+                submissionTanContent.submissionTanCharacterError.visibility = View.GONE
+                submissionTanContent.submissionTanError.visibility = View.GONE
 
-            viewModel.onTanChanged(tan)
-        }
+                viewModel.onTanChanged(tan)
+            }
 
-        binding.submissionTanButtonEnter.setOnClickListener {
-            viewModel.onTanSubmit()
+            submissionTanButtonEnter.setOnClickListener {
+                viewModel.onTanSubmit()
+            }
+            submissionTanHeader.headerButtonBack.buttonIcon.setOnClickListener { goBack() }
         }
-        binding.submissionTanHeader.headerButtonBack.buttonIcon.setOnClickListener { goBack() }
 
         viewModel.registrationState.observe2(this) {
             binding.submissionTanSpinner.visibility = when (it) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt
index 04c1e7a8f0040f8bff6199ad7d1e752fc46751e6..a83715de6529bde14c14a68240ad1381683859fa 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt
@@ -13,7 +13,6 @@ import androidx.annotation.DimenRes
 import androidx.core.view.children
 import androidx.core.widget.doOnTextChanged
 import de.rki.coronawarnapp.R
-import kotlinx.android.synthetic.main.view_tan_input_edittext.view.*
 import java.util.Locale
 import kotlin.math.max
 
@@ -45,6 +44,8 @@ class TanInput(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs
 
     private val lineSpacing: Int
 
+    private var tanInputEditText: EditText
+
     init {
         // add "hidden" edittext for input handling
         inflate(context, R.layout.view_tan_input_edittext, this)
@@ -56,10 +57,11 @@ class TanInput(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs
 
         lineSpacing = getDimension(R.dimen.submission_tan_line_spacing).toInt()
 
-        tan_input_edittext.filters = arrayOf(whitespaceFilter, alphaNumericFilter, lengthFilter)
+        tanInputEditText = findViewById<EditText>(R.id.tan_input_edittext).apply {
+            filters = arrayOf(whitespaceFilter, alphaNumericFilter, lengthFilter)
+            doOnTextChanged { text, _, _, _ -> updateTan(text ?: "") }
+        }
 
-        // register listener
-        tan_input_edittext.doOnTextChanged { text, _, _, _ -> updateTan(text ?: "") }
         setOnClickListener { showKeyboard() }
 
         // initially show the keyboard
@@ -70,9 +72,9 @@ class TanInput(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs
     }
 
     private fun showKeyboard() {
-        if (tan_input_edittext.requestFocus()) {
+        if (tanInputEditText.requestFocus()) {
             val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
-            imm.showSoftInput(tan_input_edittext, InputMethodManager.SHOW_IMPLICIT)
+            imm.showSoftInput(tanInputEditText, InputMethodManager.SHOW_IMPLICIT)
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt
index 865e513b33eb2b4d5e5b01107ebbf855e433c580..daff644571e0c726d680deda285ca807fa7eaed2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt
@@ -7,6 +7,7 @@ import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultInvalidBinding
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.doNavigate
@@ -58,7 +59,7 @@ class SubmissionTestResultInvalidFragment : Fragment(R.layout.fragment_submissio
             }
         )
         DialogHelper.showDialog(removeTestDialog).apply {
-            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed))
+            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed))
         }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt
index 858644b7d4204827166d9be5967d01dec38b59d2..8bcec718620fd35770d91251e7f46f8f156eccda 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt
@@ -7,6 +7,7 @@ import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultNegativeBinding
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.doNavigate
@@ -58,7 +59,7 @@ class SubmissionTestResultNegativeFragment : Fragment(R.layout.fragment_submissi
             }
         )
         DialogHelper.showDialog(removeTestDialog).apply {
-            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed))
+            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed))
         }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt
index b1b4283557abe8d5e55568fb957f3fb6f8db9fe5..2a2949b43996845f734ae09a5fc95c9b1facc289 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt
@@ -10,6 +10,7 @@ import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultPendingBindi
 import de.rki.coronawarnapp.exception.http.CwaClientError
 import de.rki.coronawarnapp.exception.http.CwaServerError
 import de.rki.coronawarnapp.exception.http.CwaWebException
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withFailure
 import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess
@@ -113,7 +114,7 @@ class SubmissionTestResultPendingFragment : Fragment(R.layout.fragment_submissio
             }
         )
         DialogHelper.showDialog(removeTestDialog).apply {
-            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed))
+            getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed))
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt
index 00e8240cbad0aedd6495ef5ee16dd470af67bc09..eb168f41aaad8ee884df4838bff42a952e9ebf8b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt
@@ -6,8 +6,6 @@ import android.view.View
 import android.widget.TextView
 import androidx.core.content.withStyledAttributes
 import de.rki.coronawarnapp.R
-import kotlinx.android.synthetic.main.include_step_entry_simple_body.view.simple_step_entry_body
-import kotlinx.android.synthetic.main.include_step_entry_simple_body.view.simple_step_entry_title
 
 /**
  * The [SimpleStepEntry] is a step entry with title and text as content.
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt
index 3d3e130a70e926e3dab00d867970bbba93adb9ef..f8c117a56350b2d839999f3f3d1c45a3d090513b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt
@@ -5,10 +5,9 @@ import android.util.AttributeSet
 import android.view.View
 import android.view.ViewGroup
 import android.widget.FrameLayout
+import android.widget.ImageView
 import androidx.core.content.withStyledAttributes
 import de.rki.coronawarnapp.R
-import kotlinx.android.synthetic.main.view_step_entry.view.step_entry_icon
-import kotlinx.android.synthetic.main.view_step_entry.view.step_entry_line
 
 /**
  * The [StepEntry] displays one step in a sequence. Children can be added to define the content.
@@ -28,10 +27,10 @@ open class StepEntry @JvmOverloads constructor(
 
         context.withStyledAttributes(attrs, R.styleable.StepEntry) {
             val icon = getDrawable(R.styleable.StepEntry_step_entry_icon)
-            step_entry_icon.setImageDrawable(icon)
+            findViewById<ImageView>(R.id.step_entry_icon).setImageDrawable(icon)
 
             val isFinal = getBoolean(R.styleable.StepEntry_step_entry_final, false)
-            step_entry_line.visibility = if (isFinal) {
+            findViewById<View>(R.id.step_entry_line).visibility = if (isFinal) {
                 View.INVISIBLE
             } else {
                 View.VISIBLE
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt
index adc72f7f193c8f8a3291d365452577d59dfecec3..b7582ab603f1d2d63d9a9e5761963d52675ee27e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt
@@ -9,12 +9,12 @@ import androidx.appcompat.content.res.AppCompatResources.getDrawable
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.content.withStyledAttributes
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.ViewTestResultSectionBinding
 import de.rki.coronawarnapp.util.DeviceUIState
 import de.rki.coronawarnapp.util.NetworkRequestWrapper
 import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.toUIFormat
 import de.rki.coronawarnapp.util.formatter.formatTestResult
-import kotlinx.android.synthetic.main.view_test_result_section.view.*
 import java.util.Date
 
 /**
@@ -26,30 +26,33 @@ constructor(
     attrs: AttributeSet? = null,
     defStyleAttr: Int = 0
 ) : ConstraintLayout(context, attrs, defStyleAttr) {
+    private val binding = ViewTestResultSectionBinding.bind(this)
 
     init {
         inflate(context, R.layout.view_test_result_section, this)
         context.withStyledAttributes(attrs, R.styleable.TestResultSection) {
-            test_result_section_headline.text =
+            binding.testResultSectionHeadline.text =
                 getText(R.styleable.TestResultSection_test_result_section_headline)
-            test_result_section_content.text =
+            binding.testResultSectionContent.text =
                 getText(R.styleable.TestResultSection_test_result_section_content)
-            test_result_section_registered_at_text.text =
+            binding.testResultSectionRegisteredAtText.text =
                 getText(R.styleable.TestResultSection_test_result_section_registered_at_text)
             val resultIconId = getResourceId(R.styleable.TestResultSection_test_result_section_status_icon, 0)
             if (resultIconId != 0) {
                 val drawable = getDrawable(context, resultIconId)
-                test_result_section_status_icon.setImageDrawable(drawable)
+                binding.testResultSectionStatusIcon.setImageDrawable(drawable)
             }
         }
     }
 
     fun setTestResultSection(uiState: NetworkRequestWrapper<DeviceUIState, Throwable>?, registeredAt: Date?) {
-        test_result_section_headline.text = context.getString(R.string.test_result_card_headline)
-        test_result_section_registered_at_text.text = formatTestResultRegisteredAtText(registeredAt)
-        val testResultIcon = formatTestStatusIcon(uiState)
-        test_result_section_status_icon.setImageDrawable(testResultIcon)
-        test_result_section_content.text = formatTestResultSectionContent(uiState)
+        binding.apply {
+            testResultSectionHeadline.text = context.getString(R.string.test_result_card_headline)
+            testResultSectionRegisteredAtText.text = formatTestResultRegisteredAtText(registeredAt)
+            val testResultIcon = formatTestStatusIcon(uiState)
+            testResultSectionStatusIcon.setImageDrawable(testResultIcon)
+            testResultSectionContent.text = formatTestResultSectionContent(uiState)
+        }
     }
 
     private fun formatTestStatusIcon(uiState: NetworkRequestWrapper<DeviceUIState, Throwable>?): Drawable? {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ContextExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ContextExtensions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2c2ca6229c101c0094aa9d7d87adfcf77f8ceb8d
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ContextExtensions.kt
@@ -0,0 +1,19 @@
+package de.rki.coronawarnapp.util
+
+import android.content.Context
+import androidx.annotation.ColorRes
+import androidx.core.content.ContextCompat
+
+/**
+ * These context extensions provide easier access to the ContextCompat calls that we want
+ * to call.
+ *
+ * This is wanted because it increases compatibility with Android versions < API level 23
+ * (from which downstream projects may benefit).
+ */
+object ContextExtensions {
+
+    fun Context.getColorCompat(@ColorRes id: Int) = ContextCompat.getColor(this, id)
+
+    fun Context.getColorStateListCompat(@ColorRes id: Int) = ContextCompat.getColorStateList(this, id)
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt
index 48bb77b8dbcd1ccb99cd3d3793b89f940f31bf58..dedb9a57f4c54549df0e26449725614703ca67b5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt
@@ -7,6 +7,7 @@ import android.text.util.Linkify
 import android.widget.TextView
 import androidx.appcompat.app.AlertDialog
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorStateListCompat
 import java.util.regex.Pattern
 
 object DialogHelper {
@@ -111,7 +112,7 @@ object DialogHelper {
         textView.movementMethod = LinkMovementMethod.getInstance()
         textView.setPadding(paddingStartEnd, paddingLeftRight, paddingStartEnd, paddingLeftRight)
         textView.setTextAppearance(R.style.body1)
-        textView.setLinkTextColor(context.getColorStateList(R.color.button_primary))
+        textView.setLinkTextColor(context.getColorStateListCompat(R.color.button_primary))
         if (isTextSelectable) textView.setTextIsSelectable(true)
         return textView
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt
index 5fc6d95b574f2d7e1529aa9006c1eac53471073b..13fee0bf01ce9125776deb20f21dc625a8229dd3 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt
@@ -8,6 +8,7 @@ import android.text.Spanned
 import android.view.View
 import de.rki.coronawarnapp.CoronaWarnApplication
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.html.HtmlParser
 
 /*Style*/
@@ -39,9 +40,9 @@ fun formatDrawable(value: Boolean, drawableTrue: Int, drawableFalse: Int): Drawa
 fun formatColor(value: Boolean, colorTrue: Int, colorFalse: Int): Int {
     val appContext = CoronaWarnApplication.getAppContext()
     return if (value) {
-        appContext.getColor(colorTrue)
+        appContext.getColorCompat(colorTrue)
     } else {
-        appContext.getColor(colorFalse)
+        appContext.getColorCompat(colorFalse)
     }
 }
 
@@ -126,7 +127,7 @@ fun formatText(value: Boolean?, stringTrue: Int, stringFalse: Int?): String {
  */
 fun formatColorIcon(color: Int?): Int {
     val appContext = CoronaWarnApplication.getAppContext()
-    return color ?: appContext.getColor(R.color.colorAccentTintIcon)
+    return color ?: appContext.getColorCompat(R.color.colorAccentTintIcon)
 }
 
 fun parseHtmlFromAssets(context: Context, path: String): Spanned {
@@ -141,7 +142,7 @@ fun parseHtmlFromAssets(context: Context, path: String): Spanned {
  * @return
  */
 fun formatColorDivider(context: Context, color: Int?): Int {
-    return color ?: context.getColor(R.color.colorHairline)
+    return color ?: context.getColorCompat(R.color.colorHairline)
 }
 
 /**
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt
index ef803b9cc211377e2e158da872a5c6390f27b184..5f7183ac842423b6dc47e83e899e63f3239582d5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt
@@ -12,6 +12,7 @@ import android.view.View
 import de.rki.coronawarnapp.CoronaWarnApplication
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.submission.Symptoms
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DeviceUIState
 import de.rki.coronawarnapp.util.NetworkRequestWrapper
 import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess
@@ -69,7 +70,7 @@ fun formatTestResultStatusColor(uiState: NetworkRequestWrapper<DeviceUIState, Th
             DeviceUIState.PAIRED_POSITIVE_TELETAN -> R.color.colorTextSemanticRed
             else -> R.color.colorTextSemanticRed
         }
-    }.let { CoronaWarnApplication.getAppContext().getColor(it) }
+    }.let { CoronaWarnApplication.getAppContext().getColorCompat(it) }
 
 fun formatTestResult(uiState: NetworkRequestWrapper<DeviceUIState, Throwable>?): Spannable {
     val appContext = CoronaWarnApplication.getAppContext()
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
index 7a8a0aab5970bf062ecef781472515db21329f2f..b10e12af96c1dfda406f6f2223ceb11d6e4db6ff 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
@@ -88,7 +88,7 @@
                     android:layout_height="wrap_content"
                     app:body="@{@string/settings_background_priority_body_description}"
                     app:color="@{backgroundState.getBackgroundPriorityIconColor(context)}"
-                    app:icon="@{backgroundState.getBackgroindPriorityIcon(context)}"
+                    app:icon="@{backgroundState.getBackgroundPriorityIcon(context)}"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/settings_notifications"
diff --git a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml
index 4e87bc92be1a3735fb31dd58101e3396696a1777..cefdccb11b77dbbf6a2759ff368ce3153c8b6795 100644
--- a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml
@@ -113,7 +113,7 @@
     <string name="accessibility_person_selected">Person %s ist ausgewählt</string>
 
     <!-- XTXT: Select (description for screen readers) -->
-    <string name="accessibility_action_select">auswählen</string>
+    <string name="accessibility_action_select">Auswählen</string>
     <!-- XTXT: Deselect (description for screen readers) -->
     <string name="accessibility_action_deselect">Auswahl aufheben</string>
     <!-- XTXT: Edit (description for screen readers) -->
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt
index 4a79175294e20507701e9a3afd273d660e92bc70..5e6f1e043092b1c620a05a53b030191822013822 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt
@@ -7,6 +7,7 @@ import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.BluetoothDis
 import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.LocationDisabled
 import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.TracingActive
 import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.TracingInActive
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
@@ -45,7 +46,7 @@ class TracingHeaderStateTest : BaseTest() {
             getTracingAnimation(context) shouldBe R.drawable.ic_settings_tracing_bluetooth_inactive
 
             getTracingTint(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
 
             getTracingDescription(context)
             verify { context.getString(R.string.settings_tracing_body_bluetooth_inactive) }
@@ -64,7 +65,7 @@ class TracingHeaderStateTest : BaseTest() {
             getTracingAnimation(context) shouldBe R.drawable.ic_settings_location_inactive_small
 
             getTracingTint(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
 
             getTracingDescription(context)
             verify { context.getString(R.string.settings_tracing_body_inactive_location) }
@@ -83,7 +84,7 @@ class TracingHeaderStateTest : BaseTest() {
             getTracingAnimation(context) shouldBe R.drawable.ic_settings_tracing_inactive
 
             getTracingTint(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
 
             getTracingDescription(context)
             verify { context.getString(R.string.settings_tracing_body_inactive) }
@@ -102,7 +103,7 @@ class TracingHeaderStateTest : BaseTest() {
             getTracingAnimation(context) shouldBe R.raw.ic_settings_tracing_animated
 
             getTracingTint(context)
-            verify { context.getColor(R.color.colorAccentTintIcon) }
+            verify { context.getColorCompat(R.color.colorAccentTintIcon) }
 
             getTracingDescription(context)
             verify { context.getString(R.string.settings_tracing_body_active) }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt
index b3e776b678031450597030525392d0935ff53fa9..078f63e2650143753a4b748d4a219a564b1ea272 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.settings.start
 
 import android.content.Context
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
 import io.mockk.impl.annotations.MockK
@@ -33,22 +34,22 @@ class SettingsBackgroundStateTest : BaseTest() {
     fun getBackgroundPriorityIconColor() {
         createInstance(isEnabled = true).apply {
             getBackgroundPriorityIconColor(context)
-            verify { context.getColor(R.color.colorAccentTintIcon) }
+            verify { context.getColorCompat(R.color.colorAccentTintIcon) }
         }
         createInstance(isEnabled = false).apply {
             getBackgroundPriorityIconColor(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
         }
     }
 
     @Test
     fun getBackgroindPriorityIcon() {
         createInstance(isEnabled = true).apply {
-            getBackgroindPriorityIcon(context)
+            getBackgroundPriorityIcon(context)
             verify { context.getDrawable(R.drawable.ic_settings_background_priority_enabled) }
         }
         createInstance(isEnabled = false).apply {
-            getBackgroindPriorityIcon(context)
+            getBackgroundPriorityIcon(context)
             verify { context.getDrawable(R.drawable.ic_settings_background_priority_disabled) }
         }
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt
index 5e8121d04f08b51968c8b73ea148bf20cfa3a189..10d4fcfc23922bfa7fa69004adc3a1c22920ccb7 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.settings.start
 
 import android.content.Context
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
@@ -23,7 +24,7 @@ class SettingsNotificationStateTest : BaseTest() {
     fun setup() {
         MockKAnnotations.init(this)
         every { context.getString(any()) } returns ""
-        every { context.getColor(any()) } returns 0
+        every { context.getColorCompat(any()) } returns 0
         every { context.getDrawable(any()) } returns mockk()
     }
 
@@ -72,14 +73,14 @@ class SettingsNotificationStateTest : BaseTest() {
             isNotificationsRiskEnabled = true,
             isNotificationsTestEnabled = true
         ).getNotificationIconColor(context)
-        verify { context.getColor(R.color.colorAccentTintIcon) }
+        verify { context.getColorCompat(R.color.colorAccentTintIcon) }
 
         SettingsNotificationState(
             isNotificationsEnabled = false,
             isNotificationsRiskEnabled = true,
             isNotificationsTestEnabled = true
         ).getNotificationIconColor(context)
-        verify { context.getColor(R.color.colorTextSemanticRed) }
+        verify { context.getColorCompat(R.color.colorTextSemanticRed) }
     }
 
     @Test
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt
index 50ff6b9db7eb61ee9b35a449a435978e87799eb0..554a4bfb90a5d48eadef36d9956859dea2c07483 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.ui.settings.start
 import android.content.Context
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
@@ -39,7 +40,7 @@ class SettingsTracingStateTest : BaseTest() {
     fun `bluetooth disabled`() {
         SettingsTracingState.BluetoothDisabled.apply {
             getTracingIconColor(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
 
             getTracingIcon(context)
             verify { context.getDrawable(R.drawable.ic_settings_tracing_bluetooth_inactive) }
@@ -53,7 +54,7 @@ class SettingsTracingStateTest : BaseTest() {
     fun `location disabled`() {
         SettingsTracingState.LocationDisabled.apply {
             getTracingIconColor(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
 
             getTracingIcon(context)
             verify { context.getDrawable(R.drawable.ic_settings_location_inactive_small) }
@@ -67,7 +68,7 @@ class SettingsTracingStateTest : BaseTest() {
     fun `tracing inactive`() {
         SettingsTracingState.TracingInActive.apply {
             getTracingIconColor(context)
-            verify { context.getColor(R.color.colorTextSemanticRed) }
+            verify { context.getColorCompat(R.color.colorTextSemanticRed) }
 
             getTracingIcon(context)
             verify { context.getDrawable(R.drawable.ic_settings_tracing_inactive_small) }
@@ -81,7 +82,7 @@ class SettingsTracingStateTest : BaseTest() {
     fun `tracing active`() {
         SettingsTracingState.TracingActive.apply {
             getTracingIconColor(context)
-            verify { context.getColor(R.color.colorAccentTintIcon) }
+            verify { context.getColorCompat(R.color.colorAccentTintIcon) }
 
             getTracingIcon(context)
             verify { context.getDrawable(R.drawable.ic_settings_tracing_active_small) }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt
index 4bf0c3059d4a5d1f861bf4666a6a567ae4325ea2..dcd531d5c2b9bce3f5fda4566d322cf4850d16c9 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt
@@ -4,10 +4,13 @@ import android.content.Context
 import android.graphics.drawable.Drawable
 import android.view.View
 import de.rki.coronawarnapp.CoronaWarnApplication
+import de.rki.coronawarnapp.util.ContextExtensions
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import io.mockk.MockKAnnotations
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
 import io.mockk.mockkObject
+import io.mockk.mockkStatic
 import io.mockk.unmockkAll
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.equalTo
@@ -28,6 +31,7 @@ class FormatterHelperTest {
     fun setUp() {
         MockKAnnotations.init(this)
         mockkObject(CoronaWarnApplication.Companion)
+        mockkStatic(ContextExtensions::class)
 
         every { CoronaWarnApplication.getAppContext() } returns context
     }
@@ -69,11 +73,11 @@ class FormatterHelperTest {
     }
 
     private fun formatColorBase(bValue: Boolean, iColor: Int) {
-        every { context.getColor(1) } returns 1
-        every { context.getColor(2) } returns 2
+        every { context.getColorCompat(1) } returns 1
+        every { context.getColorCompat(2) } returns 2
 
         val result = formatColor(value = bValue, colorTrue = 1, colorFalse = 2)
-        assertThat(result, `is`((context.getColor(iColor))))
+        assertThat(result, `is`((context.getColorCompat(iColor))))
     }
 
     @Test
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt
index eafa5fc83590c08e77f98c840c4c90964cd3c887..cca5bb6e77e064daaf850a45e64b1c1301ff96d6 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt
@@ -8,6 +8,8 @@ import android.text.style.ForegroundColorSpan
 import android.view.View
 import de.rki.coronawarnapp.CoronaWarnApplication
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
 import de.rki.coronawarnapp.util.DeviceUIState
 import de.rki.coronawarnapp.util.NetworkRequestWrapper
 import io.mockk.MockKAnnotations
@@ -38,6 +40,7 @@ class FormatterSubmissionHelperTest {
         mockkObject(CoronaWarnApplication.Companion)
         mockkStatic(SpannableStringBuilder::class)
         mockkStatic(Spannable::class)
+        mockkStatic(ContextExtensions::class)
 
         every { CoronaWarnApplication.getAppContext() } returns context
 
@@ -48,8 +51,8 @@ class FormatterSubmissionHelperTest {
         every { context.getString(R.string.test_result_card_status_pending) } returns R.string.test_result_card_status_pending.toString()
         every { context.getString(R.string.test_result_card_status_invalid) } returns R.string.test_result_card_status_invalid.toString()
 
-        every { context.getColor(R.color.colorTextSemanticGreen) } returns R.color.colorTextSemanticGreen
-        every { context.getColor(R.color.colorTextSemanticRed) } returns R.color.colorTextSemanticRed
+        every { context.getColorCompat(R.color.colorTextSemanticGreen) } returns R.color.colorTextSemanticGreen
+        every { context.getColorCompat(R.color.colorTextSemanticRed) } returns R.color.colorTextSemanticRed
 
         every { context.getDrawable(R.drawable.ic_test_result_illustration_invalid) } returns drawable
         every { context.getDrawable(R.drawable.ic_test_result_illustration_pending) } returns drawable
@@ -179,39 +182,39 @@ class FormatterSubmissionHelperTest {
     fun formatTestResultStatusColor() {
         formatTestResultStatusColorBase(
             oUiState = null,
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_NEGATIVE),
-            iResult = context.getColor(R.color.colorTextSemanticGreen)
+            iResult = context.getColorCompat(R.color.colorTextSemanticGreen)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_ERROR),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_NO_RESULT),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_POSITIVE),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_POSITIVE_TELETAN),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.SUBMITTED_FINAL),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.SUBMITTED_INITIAL),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
         formatTestResultStatusColorBase(
             oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.UNPAIRED),
-            iResult = context.getColor(R.color.colorTextSemanticRed)
+            iResult = context.getColorCompat(R.color.colorTextSemanticRed)
         )
     }