diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 757f7fa4..5172c2f1 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -29,8 +29,8 @@ android {
         applicationId = "org.grakovne.lissen"
         minSdk = 28
         targetSdk = 35
-        versionCode = 59
-        versionName = "1.1.28"
+        versionCode = 60
+        versionName = "1.1.29"
 
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
         vectorDrawables {
diff --git a/app/src/main/java/org/grakovne/lissen/content/cache/ContentCachingService.kt b/app/src/main/java/org/grakovne/lissen/content/cache/ContentCachingService.kt
index e370af02..94fbf42e 100644
--- a/app/src/main/java/org/grakovne/lissen/content/cache/ContentCachingService.kt
+++ b/app/src/main/java/org/grakovne/lissen/content/cache/ContentCachingService.kt
@@ -226,10 +226,10 @@ class ContentCachingService @Inject constructor(
 
         return when (option) {
             AllItemsDownloadOption -> book.chapters
-            CurrentItemDownloadOption -> listOf(book.chapters[chapterIndex])
+            CurrentItemDownloadOption -> listOfNotNull(book.chapters.getOrNull(chapterIndex))
             is NumberItemDownloadOption -> book.chapters.subList(
-                fromIndex = chapterIndex,
-                toIndex = (chapterIndex + option.itemsNumber).coerceAtMost(book.chapters.size),
+                chapterIndex.coerceAtLeast(0),
+                (chapterIndex + option.itemsNumber).coerceIn(chapterIndex..book.chapters.size),
             )
         }
     }
diff --git a/app/src/main/java/org/grakovne/lissen/widget/MediaRepository.kt b/app/src/main/java/org/grakovne/lissen/widget/MediaRepository.kt
index e12c3076..6a4f1e54 100644
--- a/app/src/main/java/org/grakovne/lissen/widget/MediaRepository.kt
+++ b/app/src/main/java/org/grakovne/lissen/widget/MediaRepository.kt
@@ -408,6 +408,11 @@ class MediaRepository @Inject constructor(
     private fun seekTo(position: Double) {
         val book = playingBook.value ?: return
 
+        if (book.chapters.isEmpty()) {
+            Log.d(TAG, "Tried to seek on the empty book")
+            return
+        }
+
         val overallDuration = book
             .chapters
             .sumOf { it.duration }