diff --git a/game.js b/game.js
index 4b69b436e027afca10f0c92661c3a98a04ef81bf..b8de109c5605bb4657fbb41e18b5e4b3907a5c49 100644
--- a/game.js
+++ b/game.js
@@ -444,39 +444,51 @@ var levelRef = {
         "y": 0,
         "w": 32,
         "h": 32,
+        "type": "blank"
     },
     "tiles": [
         {
         },
         {
             "x": 32,
+            "type": "floor"
         },
         {
             "x": 64,
+            "type": "wall"
         },
         {
             "x": 96,
+            "type": "wall"
+
         },
         {
             "x": 128,
+            "type": "wall"
         },
         {
             "x": 160,
+            "type": "wall"
         },
         {
             "x": 192,
+            "type": "wall"
         },
         {
             "x": 224,
+            "type": "wall"
         },
         {
             "x": 256,
+            "type": "wall"
         },
         { // player
-            "x": 32
+            "x": 32,
+            "type": "floor"
         },
         { // human
-            "x": 32
+            "x": 32,
+            "type": "floor"
         }
     ]
 }
@@ -590,6 +602,13 @@ player.step = () => {
 
     player.speed *= 0.009;
 
+    // check that the player won't go into a wall on the next step, and if so, stop.
+    for (let tile of gameRoom.level) {
+        if (player.x/64 > tile.x && player.x/64 < tile.x + tile.w && player.y/64 > tile.y && player.y/64 < tile.y + tile.h) {
+            player.speed = 0;
+        }
+    }
+
     // keep the camera centered on the player
     c.setCamera(player.x - c.w/2, player.y - c.h/2);
 
@@ -725,8 +744,56 @@ gameRoom.start = () =>{
 
     for (let tile of gameRoom.level) {
         if (tile[0] === 9) {
-            player.x = tile[1]*64
-            player.y = tile[2]*64
+            player.x = (tile[1]*64)+32
+            player.y = (tile[2]*64)+32
+        }
+        if(tile[0]===10){
+            let checkwall = (tx,ty) => {
+                for (let tile of gameRoom.level) {
+                    if (levelRef.tiles[tile[0]].type == "wall" && tile[1] == tx && tile[2] == ty) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+
+            let pooman = new Entity("Human", (tile[1]*64),(tile[2]*64), images.mouse.cursor)
+            pooman.step = _=>{
+                if (pooman.timer<=0){
+                    let director = Math.floor(Math.random()*4)
+                    pooman.direction = director*90;
+                    let tX = Math.floor(pooman.x / 64)
+                    let tY = Math.floor(pooman.y / 64)
+                    if (director === 0){
+                        if (!checkwall(tX,tY-1)){
+                            pooman.y -= 64;
+                        }
+                    }
+                    if (director === 1){
+                        if (!checkwall(tX+1,tY)){
+                            pooman.x += 64;
+                        }
+                    }
+                    if (director === 2){
+                        if (!checkwall(tX,tY+1)){
+                            pooman.y += 64;
+                        }
+                    }
+                    if (director === 3){
+                        if (!checkwall(tX-1,tY)){
+                            pooman.x -= 64;
+                        }
+                    }
+                    pooman.timer = 90;
+                }
+                pooman.timer--;
+            }
+            pooman.draw = _=>{
+                c.drawImage(images.mouse.cursor, pooman.x, pooman.y, 64, 64, pooman.direction);
+                c.dT(`${pooman.timer} :: ${pooman.direction}`, pooman.x, pooman.y, 1, 1, "white", "middle", "middle");
+            }
+            pooman.timer = 90;
+            gameRoom.spawn(pooman);
         }
     }
 }
@@ -849,32 +916,21 @@ lvlS.drawGUI = () => {
     c.dT("Level Select", c.w/2, 44, 1,1,"gray","middle","middle");
     for (let o in lvlS.o) {
         let n = parseInt(o)+1
-        let slice = 15
-        if (n >= 100){
-            let slice = 13;
-        } else if (n >= 10) {
-            let slice = 14;
-        }
-        let txt = c.dT(`${n}.${lvlS.o[o].name.slice(0,slice)}`, 40, (70)+(o*20), 2,2,"#fff");
-        if (lvlS.s == o) {
-            let a = images.ui.a;
-            let ap = (40)-a.width-4;
-            let ap2 = (40+txt.w)+a.width-4;
-            c.drawImg(a, ap, (70)+(o*20), a.width*2, a.height*2)
-            c.drawImg(a, ap2, (70)+(o*20), a.width*2, a.height*2, 180)
+        c.dT(`${n}`, (20)+(32*n), 70, 2, 2, "#fff", "middle", "middle")
+        if (o == lvlS.s) {
+            c.strokeRect((20-14)+(32*n), 70-16, 32, 32, "#fff")
         }
     }
-    c.drawLine(c.w/2, 60, c.w/2, c.h-20, "white")
 }
 
 lvlS.keyDown = (key) => {
-    if (key == "ArrowUp" || key == "KeyW") {
+    if (key == "ArrowUp"||key=="ArrowRight"||key == "KeyW"||key=="KeyD") {
         lvlS.s -= 1
         if (lvlS.s < 0) {
             lvlS.s = lvlS.o.length-1
         }
     }
-    if (key == "ArrowDown" || key == "KeyS") {
+    if (key == "ArrowDown" ||key=="ArrowLeft"||key == "KeyW"|| key == "KeyA") {
         lvlS.s += 1
         if (lvlS.s > lvlS.o.length-1) {
             lvlS.s = 0
diff --git a/human.aseprite b/human.aseprite
new file mode 100644
index 0000000000000000000000000000000000000000..977d23f02f8006c4001bae5c8558a35737815ac1
Binary files /dev/null and b/human.aseprite differ
diff --git a/human.png b/human.png
new file mode 100644
index 0000000000000000000000000000000000000000..6dc00291784b44a78d4b1c0bd5217f9b5e3124c0
Binary files /dev/null and b/human.png differ
diff --git a/test.html b/test.html
deleted file mode 100644
index 062cd989c7513e02cc1cef238472cc8bc30b1758..0000000000000000000000000000000000000000
--- a/test.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Document</title>
-</head>
-<body>
-    <li>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sed accusamus id architecto fugiat enim eveniet dolor labore odio quas. Exercitationem ea mollitia quisquam laudantium! Cumque sunt dignissimos dolorem sed suscipit.</li>
-    <li>Dolorem, vitae. Tempora earum iure autem error quia eum, eligendi neque quidem ea quasi tenetur nobis. Exercitationem, architecto impedit? Architecto ex adipisci ducimus odit esse quia perferendis at voluptas minima?</li>
-    <li>Fugiat nulla id accusamus iusto dolorem labore facilis est quibusdam, accusantium, tempora cumque culpa minus? Cumque fugiat veritatis, officiis eaque fuga nostrum aliquam? Architecto explicabo cumque fugiat. Laborum, omnis asperiores!</li>
-    <li>Ducimus praesentium consequuntur cum suscipit velit quam aut corrupti debitis in necessitatibus quasi possimus quisquam nihil tenetur veritatis amet molestias dolor quia ratione sit eveniet, quaerat at. Quam, eos libero.</li>
-    <li>Natus, dolore. Mollitia doloribus in molestias iusto est temporibus non quas vero, debitis eveniet eaque nam voluptates sed ducimus aut facere obcaecati dolorem beatae repudiandae eum, sapiente tempora perferendis cum!</li>
-    <li>Itaque, quo nam architecto placeat reiciendis expedita quibusdam eos tempora accusantium aliquid commodi accusamus repellat? Tempore blanditiis eos, magnam sequi, perspiciatis impedit eveniet placeat alias velit praesentium voluptates. Totam, minus.</li>
-    <li>Iusto recusandae sint accusantium voluptatibus quo illum molestias, amet, at voluptates ducimus tempora tempore error nemo impedit quos architecto esse fugiat eaque molestiae unde dolorem laudantium. Aspernatur suscipit sint adipisci?</li>
-    <li>Vel optio quod quas. Perferendis, dolorum. Minima nihil ipsa eligendi temporibus! Sit praesentium maxime expedita, dolorem libero consequatur error quae quisquam iste vel possimus temporibus culpa repellendus molestiae eum aliquam?</li>
-    <li>Repellat distinctio, necessitatibus minima ipsa debitis unde quidem nobis consequatur aliquam deleniti perferendis ullam nostrum maiores ea voluptate obcaecati optio aliquid vero nihil. Nesciunt culpa molestias quisquam cum? Blanditiis, amet.</li>
-    <li>Harum velit accusantium aspernatur perspiciatis labore blanditiis facere fugiat non repudiandae, animi nostrum quidem necessitatibus officia perferendis fugit? Vitae fugit enim facilis animi quasi in magnam atque sed esse sit.</li>
-    <li>Molestiae atque, vitae earum similique voluptas dolorem ea pariatur veniam cupiditate eius debitis, qui dolores cum quis est. At aperiam quisquam sed atque rem animi et tempora excepturi quos minima.</li>
-    <li>Sunt quos tempore fugit ab modi, eligendi amet cumque ipsum excepturi aperiam consectetur autem accusantium? Quas qui exercitationem iusto harum voluptatum odit illo quidem deleniti. Voluptatem eaque fuga cumque laboriosam?</li>
-    <li>Quos officia inventore rerum assumenda! Aliquam quasi, libero molestiae dignissimos delectus quos ipsa minima mollitia qui dolorum quibusdam maiores accusamus? Voluptates autem, placeat eaque laudantium tempora quisquam minima at explicabo.</li>
-</body>
-</html>
\ No newline at end of file