diff --git a/app/src/main/java/net/newpipe/newplayer/VideoPlayerActivity.kt b/app/src/main/java/net/newpipe/newplayer/VideoPlayerActivity.kt
index f490ed5..38a4cef 100644
--- a/app/src/main/java/net/newpipe/newplayer/VideoPlayerActivity.kt
+++ b/app/src/main/java/net/newpipe/newplayer/VideoPlayerActivity.kt
@@ -5,12 +5,11 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
-import androidx.compose.material3.Text
import dagger.hilt.android.AndroidEntryPoint
-import net.newpipe.newplayer.model.VideoPlayerViewModel
-import net.newpipe.newplayer.model.VideoPlayerViewModelImpl
-import net.newpipe.newplayer.ui.VideoPlayerUI
-import net.newpipe.newplayer.ui.theme.VideoPlayerTheme
+import net.newpipe.newplayer.internal.model.VideoPlayerViewModel
+import net.newpipe.newplayer.internal.model.VideoPlayerViewModelImpl
+import net.newpipe.newplayer.internal.ui.VideoPlayerUI
+import net.newpipe.newplayer.internal.ui.theme.VideoPlayerTheme
@AndroidEntryPoint
class VideoPlayerActivity : ComponentActivity() {
diff --git a/app/src/main/java/net/newpipe/newplayer/VideoPlayerFragment.kt b/app/src/main/java/net/newpipe/newplayer/VideoPlayerFragment.kt
index c89fa51..d9d0964 100644
--- a/app/src/main/java/net/newpipe/newplayer/VideoPlayerFragment.kt
+++ b/app/src/main/java/net/newpipe/newplayer/VideoPlayerFragment.kt
@@ -34,10 +34,10 @@ import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import dagger.hilt.android.AndroidEntryPoint
-import net.newpipe.newplayer.model.VideoPlayerViewModel
-import net.newpipe.newplayer.model.VideoPlayerViewModelImpl
-import net.newpipe.newplayer.ui.VideoPlayerUI
-import net.newpipe.newplayer.ui.theme.VideoPlayerTheme
+import net.newpipe.newplayer.internal.model.VideoPlayerViewModel
+import net.newpipe.newplayer.internal.model.VideoPlayerViewModelImpl
+import net.newpipe.newplayer.internal.ui.VideoPlayerUI
+import net.newpipe.newplayer.internal.ui.theme.VideoPlayerTheme
@AndroidEntryPoint
class VideoPlayerFragment() : Fragment() {
diff --git a/app/src/main/java/net/newpipe/newplayer/VideoPlayerComponent.kt b/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt
similarity index 89%
rename from app/src/main/java/net/newpipe/newplayer/VideoPlayerComponent.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt
index e9af06f..299ce92 100644
--- a/app/src/main/java/net/newpipe/newplayer/VideoPlayerComponent.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/VideoPlayerComponent.kt
@@ -18,7 +18,7 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer
+package net.newpipe.newplayer.internal
import android.app.Application
import androidx.media3.common.Player
@@ -26,8 +26,6 @@ import androidx.media3.exoplayer.ExoPlayer
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
-import dagger.hilt.android.components.ViewModelComponent
-import dagger.hilt.android.scopes.ViewModelScoped
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
diff --git a/app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt b/app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt
similarity index 98%
rename from app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt
index 0c5631c..de60d75 100644
--- a/app/src/main/java/net/newpipe/newplayer/model/VideoPlayerViewModel.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/model/VideoPlayerViewModel.kt
@@ -18,7 +18,7 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer.model
+package net.newpipe.newplayer.internal.model
import android.app.Application
import android.os.Build
@@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import net.newpipe.newplayer.utils.VideoSize
+import net.newpipe.newplayer.internal.utils.VideoSize
import kotlinx.parcelize.Parcelize
val VIDEOPLAYER_UI_STATE = "video_player_ui_state"
diff --git a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt b/app/src/main/java/net/newpipe/newplayer/internal/ui/VideoPlayerControllerUI.kt
similarity index 98%
rename from app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/ui/VideoPlayerControllerUI.kt
index 55a97d8..dc469f3 100644
--- a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/ui/VideoPlayerControllerUI.kt
@@ -19,9 +19,8 @@
*/
-package net.newpipe.newplayer.ui
+package net.newpipe.newplayer.internal.ui
-import android.content.pm.ActivityInfo
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@@ -80,9 +79,8 @@ import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import net.newpipe.newplayer.R
-import net.newpipe.newplayer.ui.theme.VideoPlayerTheme
-import net.newpipe.newplayer.ui.theme.video_player_onSurface
-import net.newpipe.newplayer.utils.LockScreenOrientation
+import net.newpipe.newplayer.internal.ui.theme.VideoPlayerTheme
+import net.newpipe.newplayer.internal.ui.theme.video_player_onSurface
@Composable
fun VideoPlayerControllerUI(
diff --git a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt b/app/src/main/java/net/newpipe/newplayer/internal/ui/VideoPlayerUI.kt
similarity index 93%
rename from app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/ui/VideoPlayerUI.kt
index 1b5d552..b2a2bda 100644
--- a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerUI.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/ui/VideoPlayerUI.kt
@@ -18,7 +18,7 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer.ui
+package net.newpipe.newplayer.internal.ui
import android.app.Activity
import android.content.Intent
@@ -27,7 +27,6 @@ import androidx.activity.compose.BackHandler
import androidx.activity.compose.ManagedActivityResultLauncher
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.ActivityResult
-import androidx.activity.result.IntentSenderRequest
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Surface
@@ -47,14 +46,13 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.viewinterop.AndroidView
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
-import androidx.lifecycle.VIEW_MODEL_STORE_OWNER_KEY
import kotlinx.coroutines.flow.collectLatest
import net.newpipe.newplayer.VideoPlayerActivity
-import net.newpipe.newplayer.model.VIDEOPLAYER_UI_STATE
-import net.newpipe.newplayer.model.VideoPlayerViewModel
-import net.newpipe.newplayer.model.VideoPlayerViewModelImpl
-import net.newpipe.newplayer.ui.theme.VideoPlayerTheme
-import net.newpipe.newplayer.utils.findActivity
+import net.newpipe.newplayer.internal.model.VIDEOPLAYER_UI_STATE
+import net.newpipe.newplayer.internal.model.VideoPlayerViewModel
+import net.newpipe.newplayer.internal.model.VideoPlayerViewModelImpl
+import net.newpipe.newplayer.internal.ui.theme.VideoPlayerTheme
+import net.newpipe.newplayer.internal.utils.findActivity
@Composable
fun VideoPlayerUI(
diff --git a/app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt b/app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Color.kt
similarity index 97%
rename from app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Color.kt
index b2c22dd..c906b6b 100644
--- a/app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Color.kt
@@ -18,7 +18,7 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer.ui.theme
+package net.newpipe.newplayer.internal.ui.theme
import androidx.compose.ui.graphics.Color
diff --git a/app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt b/app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Theme.kt
similarity index 96%
rename from app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Theme.kt
index b875eda..6991169 100644
--- a/app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Theme.kt
@@ -18,13 +18,12 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer.ui.theme
+package net.newpipe.newplayer.internal.ui.theme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.runtime.Composable
-import androidx.compose.ui.graphics.Color
private val VideoPlayerColorScheme = darkColorScheme(
primary = video_player_primary,
diff --git a/app/src/main/java/net/newpipe/newplayer/ui/theme/Type.kt b/app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Type.kt
similarity index 97%
rename from app/src/main/java/net/newpipe/newplayer/ui/theme/Type.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Type.kt
index 9a42dda..369d8e7 100644
--- a/app/src/main/java/net/newpipe/newplayer/ui/theme/Type.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/ui/theme/Type.kt
@@ -18,7 +18,7 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer.ui.theme
+package net.newpipe.newplayer.internal.ui.theme
import androidx.compose.material3.Typography
import androidx.compose.ui.text.TextStyle
diff --git a/app/src/main/java/net/newpipe/newplayer/utils/VideoSize.kt b/app/src/main/java/net/newpipe/newplayer/internal/utils/VideoSize.kt
similarity index 94%
rename from app/src/main/java/net/newpipe/newplayer/utils/VideoSize.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/utils/VideoSize.kt
index 8f4c3f8..ecc1846 100644
--- a/app/src/main/java/net/newpipe/newplayer/utils/VideoSize.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/utils/VideoSize.kt
@@ -1,4 +1,4 @@
-package net.newpipe.newplayer.utils
+package net.newpipe.newplayer.internal.utils
data class VideoSize(
val width: Int,
diff --git a/app/src/main/java/net/newpipe/newplayer/utils/utils.kt b/app/src/main/java/net/newpipe/newplayer/internal/utils/utils.kt
similarity index 97%
rename from app/src/main/java/net/newpipe/newplayer/utils/utils.kt
rename to app/src/main/java/net/newpipe/newplayer/internal/utils/utils.kt
index b023625..bc4f1fc 100644
--- a/app/src/main/java/net/newpipe/newplayer/utils/utils.kt
+++ b/app/src/main/java/net/newpipe/newplayer/internal/utils/utils.kt
@@ -18,7 +18,7 @@
* along with NewPlayer. If not, see .
*/
-package net.newpipe.newplayer.utils
+package net.newpipe.newplayer.internal.utils
import android.app.Activity
import android.content.Context