diff --git a/.cargo/config.toml.txt b/.cargo/config.toml
similarity index 100%
rename from .cargo/config.toml.txt
rename to .cargo/config.toml
diff --git a/Cargo.lock b/Cargo.lock
index ab6d390c2b4416069ece08b4baa57625504bdba3..2fc7399674d73f707641dfead1ade401653e9fb6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -196,6 +196,7 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c6b14f8ba7c373fdf7bd27547bb95f2849b2569bf02bbf3d19ca54e9d692de4f"
 dependencies = [
+ "bevy_dylib",
  "bevy_internal",
  "syn",
 ]
@@ -223,9 +224,9 @@ dependencies = [
 
 [[package]]
 name = "bevy_asset"
-version = "0.5.0"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "426b3557161b34230e7ec04bdc48664509985ca7a6b874491f238eadd1e7cab0"
+checksum = "bd798cfbed1fcd406c9b3c978a8cb0a278aa03c4c8abd6edf460ee7cad0987e0"
 dependencies = [
  "anyhow",
  "bevy_app",
@@ -308,6 +309,15 @@ dependencies = [
  "parking_lot",
 ]
 
+[[package]]
+name = "bevy_dylib"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efa62c7c03470969539a07337bf8c5694c0b952678fd081d68b6331842134b85"
+dependencies = [
+ "bevy_internal",
+]
+
 [[package]]
 name = "bevy_dynamic_plugin"
 version = "0.5.0"
@@ -785,9 +795,9 @@ checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
 
 [[package]]
 name = "bytemuck"
-version = "1.7.0"
+version = "1.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9966d2ab714d0f785dbac0a0396251a35280aeb42413281617d0209ab4898435"
+checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b"
 
 [[package]]
 name = "byteorder"
@@ -1333,15 +1343,15 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
 
 [[package]]
 name = "futures-core"
-version = "0.3.15"
+version = "0.3.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1"
+checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99"
 
 [[package]]
 name = "futures-io"
-version = "0.3.15"
+version = "0.3.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1"
+checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582"
 
 [[package]]
 name = "futures-lite"
@@ -2547,9 +2557,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.27"
+version = "1.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
+checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612"
 dependencies = [
  "unicode-xid",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index c9d3859c65b0de290e0f8ac0bf175bc3c22dea70..7ab9e06f19eb1bf231971a63934f420a2f45a58c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,5 +6,5 @@ edition = "2018"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-#bevy = { version = "0.5.0", features = ["dynamic"] }
-bevy = { version = "0.5.0" }
\ No newline at end of file
+bevy = { version = "0.5.0", features = ["dynamic"] }
+# bevy = { version = "0.5.0" }
\ No newline at end of file
diff --git a/src/main.rs b/src/main.rs
index 66275da4361fd1db60e4d3fc2d0ed295557b5f38..37c1d56916265d2b54049a89386bba77c8e28fc9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -8,21 +8,15 @@ fn main() {
         .insert_resource(WindowDescriptor {
             title: "My Little Zombie".to_string(),
             width: 1920.,
-            height: 1080.,
+            height: 1081.,
             ..Default::default()
         })
         .add_startup_system(setup.system())
-        // .add_system(player_movement.system())
         .add_system_set(
             SystemSet::new()
                 .with_run_criteria(FixedTimestep::step(1.0 / 60.0))
                 .with_system(player_movement.system()),
         )
-        // .add_system_set(
-        //     SystemSet::new()
-        //         .with_run_criteria(FixedTimestep::step(1.0 / 10.0))
-        //         .with_system(player_animation.system()),
-        // )
         .add_plugins(DefaultPlugins)
         .run();
 }
@@ -47,7 +41,7 @@ fn setup(
 
             transform: Transform {
                 translation: Vec3::new(0., bottom / 2.0, 10.0),
-                // scale: Vec3::new(1., 1., 1.0),
+                scale: Vec3::new(1., 1., 1.0),
                 ..Default::default()
             },
             ..Default::default()
@@ -76,133 +70,32 @@ impl Default for Player {
 
 // run each frame (60Hz)
 fn player_movement(
-    keyboard_input: Res<Input<KeyCode>>,
     mut query: Query<(&mut Player, &mut Transform, &mut TextureAtlasSprite)>,
+    keyboard_input: Res<Input<KeyCode>>,
 ) {
     if let Ok((mut player, mut transform, mut sprite)) = query.single_mut() {
-        let (index, state, dir) = if keyboard_input.pressed(KeyCode::Left) {
+        let (index, state, dir) = if keyboard_input.pressed(KeyCode::Right) {
             match player.state {
-                State::Left => ((player.index + 1) % 8, State::Left, -2.),
-                _ => (1, State::Left, 1.),
+                // already walking
+                State::Right => {
+                    let index = (player.index + 1) % 32;
+                    sprite.index = (4 * 9) + index / 4;
+                    (index, State::Right, 2.)
+                }
+                // starting walking
+                _ => {
+                    let index = 3 * 4;
+                    sprite.index = (4 * 9) + index / 4;
+                    (index, State::Right, 2.)
+                }
             }
         } else {
+            sprite.index = 0;
             (0, State::Idle, 0.)
         };
 
         player.state = state;
         player.index = index;
-        sprite.index = if index == 0 { 0 } else { 4 * 9 - 1 + index };
         transform.translation.x += dir;
     }
 }
-
-// fn player_movement(mut head_positions: Query<(&SnakeHead, &mut Transform)>) {
-//     for (_head, mut transform) in head_positions.iter_mut() {
-//         transform.translation.y += 2.;
-//     }
-// }
-
-// pub struct PlayerPlugin;
-
-// impl Plugin for PlayerPlugin {
-//     fn build(&self, app: &mut AppBuilder) {
-//         app.insert_resource(PlayerState::default())
-//             .add_startup_stage(
-//                 "game_setup_actors",
-//                 SystemStage::single(player_spawn.system()),
-//             )
-//             .add_system(player_movement.system())
-//             .add_system(player_fire.system())
-//             .add_system(laser_movement.system())
-//             .add_system_set(
-//                 SystemSet::new()
-//                     .with_run_criteria(FixedTimestep::step(0.5))
-//                     .with_system(player_spawn.system()),
-//             );
-//     }
-// }
-
-// fn player_spawn(
-//     mut commands: Commands,
-//     materials: Res<Materials>,
-//     win_size: Res<WinSize>,
-//     time: Res<Time>,
-//     mut player_state: ResMut<PlayerState>,
-// ) {
-//     let now = time.seconds_since_startup();
-//     let last_shot = player_state.last_shot;
-
-//     // spawn a sprite
-//     if !player_state.on && (last_shot == 0. || now > last_shot + PLAYER_RESPAWN_DELAY) {
-//         let bottom = -win_size.h / 2.;
-//         commands
-//             .spawn_bundle(SpriteBundle {
-//                 material: materials.player.clone(),
-//                 transform: Transform {
-//                     translation: Vec3::new(0., bottom + 75. / 4. + 5., 10.),
-//                     scale: Vec3::new(SCALE, SCALE, 1.),
-//                     ..Default::default()
-//                 },
-//                 ..Default::default()
-//             })
-//             .insert(Player)
-//             .insert(PlayerReadyFire(true))
-//             .insert(Speed::default());
-
-//         player_state.spawned();
-//     }
-// }
-
-// fn player_fire(
-//     mut commands: Commands,
-//     kb: Res<Input<KeyCode>>,
-//     materials: Res<Materials>,
-//     mut query: Query<(&Transform, &mut PlayerReadyFire), With<Player>>,
-// ) {
-//     if let Ok((player_tf, mut ready_fire)) = query.single_mut() {
-//         if ready_fire.0 && kb.pressed(KeyCode::Space) {
-//             let x = player_tf.translation.x;
-//             let y = player_tf.translation.y;
-
-//             let mut spawn_lasers = |x_offset: f32| {
-//                 commands
-//                     .spawn_bundle(SpriteBundle {
-//                         material: materials.player_laser.clone(),
-//                         transform: Transform {
-//                             translation: Vec3::new(x + x_offset, y + 15., 0.),
-//                             scale: Vec3::new(SCALE, SCALE, 1.),
-//                             ..Default::default()
-//                         },
-//                         ..Default::default()
-//                     })
-//                     .insert(Laser)
-//                     .insert(FromPlayer)
-//                     .insert(Speed::default());
-//             };
-
-//             let x_offset = 144.0 / 4.0 - 5.0;
-//             spawn_lasers(x_offset);
-//             spawn_lasers(-x_offset);
-
-//             ready_fire.0 = false;
-//         }
-
-//         if kb.just_released(KeyCode::Space) {
-//             ready_fire.0 = true;
-//         }
-//     }
-// }
-
-// fn laser_movement(
-// 	mut commands: Commands,
-// 	win_size: Res<WinSize>,
-// 	mut query: Query<(Entity, &Speed, &mut Transform), (With<Laser>, With<FromPlayer>)>,
-// ) {
-// 	for (laser_entity, speed, mut laser_tf) in query.iter_mut() {
-// 		let translation = &mut laser_tf.translation;
-// 		translation.y += speed.0 * TIME_STEP;
-// 		if translation.y > win_size.h {
-// 			commands.entity(laser_entity).despawn();
-// 		}
-// 	}
-// }