diff --git a/game/src/main.rs b/game/src/main.rs
index c07a8e200305fb234b21858989cd480f16ec75fc..a9e24892e2f815b2add3b45b0a21d7caf6ec962a 100644
--- a/game/src/main.rs
+++ b/game/src/main.rs
@@ -8,6 +8,8 @@ use bevy::{
 
 const TEXT_COLOR: Color = Color::rgb(0.9, 0.9, 0.9);
 
+mod splash;
+
 // Enum that will be used as a global state for the game
 #[derive(Clone, Copy, Default, Eq, PartialEq, Debug, Hash, States)]
 enum GameState {
@@ -53,80 +55,6 @@ fn setup(mut commands: Commands) {
     commands.spawn(Camera2dBundle::default());
 }
 
-mod splash{
-
-    use bevy::prelude::*;
-
-    use super::{despawn_screen, GameState};
-
-    // This plugin will display a splash screen with Bevy logo for 1 second before switching to the menu
-    pub struct SplashPlugin;
-
-    impl Plugin for SplashPlugin {
-        fn build(&self, app: &mut App) {
-            // As this plugin is managing the splash screen, it will focus on the state `GameState::Splash`
-            app
-                // When entering the state, spawn everything needed for this screen
-                .add_systems(OnEnter(GameState::Splash), splash_setup)
-                // While in this state, run the `countdown` system
-                .add_systems(Update, countdown.run_if(in_state(GameState::Splash)))
-                // When exiting the state, despawn everything that was spawned for this screen
-                .add_systems(OnExit(GameState::Splash), despawn_screen::<OnSplashScreen>);
-        }
-    }
-
-    // Tag component used to tag entities added on the splash screen
-    #[derive(Component)]
-    struct OnSplashScreen;
-
-    // Newtype to use a `Timer` for this screen as a resource
-    #[derive(Resource, Deref, DerefMut)]
-    struct SplashTimer(Timer);
-
-    fn splash_setup(mut commands: Commands, asset_server: Res<AssetServer>) {
-        let icon = asset_server.load("pokeball.png");
-        // Display the logo
-        commands
-            .spawn((
-                NodeBundle {
-                    style: Style {
-                        align_items: AlignItems::Center,
-                        justify_content: JustifyContent::Center,
-                        width: Val::Percent(100.0),
-                        ..default()
-                    },
-                    ..default()
-                },
-                OnSplashScreen,
-            ))
-            .with_children(|parent| {
-                parent.spawn(ImageBundle {
-                    style: Style {
-                        // This will set the logo to be 200px wide, and auto adjust its height
-                        width: Val::Px(200.0),
-                        ..default()
-                    },
-                    image: UiImage::new(icon),
-                    ..default()
-                });
-            });
-        // Insert the timer as a resource
-        commands.insert_resource(SplashTimer(Timer::from_seconds(1.0, TimerMode::Once)));
-    }
-
-    // Tick the timer, and change state when finished
-    fn countdown(
-        mut game_state: ResMut<NextState<GameState>>,
-        time: Res<Time>,
-        mut timer: ResMut<SplashTimer>,
-    ) {
-        if timer.tick(time.delta()).finished() {
-            game_state.set(GameState::Menu);
-        }
-    }
-}
-
-
 
 mod game {
     use bevy::prelude::*;
diff --git a/game/src/splash.rs b/game/src/splash.rs
new file mode 100644
index 0000000000000000000000000000000000000000..bcfe41276e5b05b3f98b86b5f28c87cc3d0a4410
--- /dev/null
+++ b/game/src/splash.rs
@@ -0,0 +1,69 @@
+use bevy::prelude::*;
+
+    use super::{despawn_screen, GameState};
+
+    // This plugin will display a splash screen with Bevy logo for 1 second before switching to the menu
+    pub struct SplashPlugin;
+
+    impl Plugin for SplashPlugin {
+        fn build(&self, app: &mut App) {
+            // As this plugin is managing the splash screen, it will focus on the state `GameState::Splash`
+            app
+                // When entering the state, spawn everything needed for this screen
+                .add_systems(OnEnter(GameState::Splash), splash_setup)
+                // While in this state, run the `countdown` system
+                .add_systems(Update, countdown.run_if(in_state(GameState::Splash)))
+                // When exiting the state, despawn everything that was spawned for this screen
+                .add_systems(OnExit(GameState::Splash), despawn_screen::<OnSplashScreen>);
+        }
+    }
+
+    // Tag component used to tag entities added on the splash screen
+    #[derive(Component)]
+    struct OnSplashScreen;
+
+    // Newtype to use a `Timer` for this screen as a resource
+    #[derive(Resource, Deref, DerefMut)]
+    struct SplashTimer(Timer);
+
+    fn splash_setup(mut commands: Commands, asset_server: Res<AssetServer>) {
+        let icon = asset_server.load("pokeball.png");
+        // Display the logo
+        commands
+            .spawn((
+                NodeBundle {
+                    style: Style {
+                        align_items: AlignItems::Center,
+                        justify_content: JustifyContent::Center,
+                        width: Val::Percent(100.0),
+                        ..default()
+                    },
+                    ..default()
+                },
+                OnSplashScreen,
+            ))
+            .with_children(|parent| {
+                parent.spawn(ImageBundle {
+                    style: Style {
+                        // This will set the logo to be 200px wide, and auto adjust its height
+                        width: Val::Px(200.0),
+                        ..default()
+                    },
+                    image: UiImage::new(icon),
+                    ..default()
+                });
+            });
+        // Insert the timer as a resource
+        commands.insert_resource(SplashTimer(Timer::from_seconds(1.0, TimerMode::Once)));
+    }
+
+    // Tick the timer, and change state when finished
+    fn countdown(
+        mut game_state: ResMut<NextState<GameState>>,
+        time: Res<Time>,
+        mut timer: ResMut<SplashTimer>,
+    ) {
+        if timer.tick(time.delta()).finished() {
+            game_state.set(GameState::Menu);
+        }
+    }
\ No newline at end of file