anchor.diff:              room_x: 0,
               room_y: 0,
   
  -            // the relative coords of the player
  -            player_x: starting_x,
  -            player_y: starting_y,
  -
               // whether the game state thinks the player is "leaving"
               exiting: false
           });
   
           stage.p = {};
  -
  -        var background = new Q.Room({ dataAsset: Q.rooms.items[Q.state.get("room")], layerIndex: 0, sheet: 'zelda', tileW: 32, tileH: 32, type: Q.SPRITE_NONE });
  -        stage.insert(background);
  -        stage.p.background = background;
  +        stage.p.rooms = [];
  +
  +        var room = new Q.Room({ dataAsset: Q.rooms.items[Q.state.get("room")], layerIndex: 0, sheet: 'zelda', tileW: 32, tileH: 32, type: Q.SPRITE_NONE });
  +        stage.insert(room);
  +        stage.p.rooms[Q.state.get("room")] = room;
   
           var player = stage.insert(new Q.Player({ x: starting_x, y: starting_y }));
   
  -        stage.getBackground = function () {
  -            return this.p.background;
  +        stage.getRoom = function (i) {
  +            return this.p.rooms[i];
           };
   
           this.zeldaSlide = function () {
               if (Q.state.get("exiting") === false) return false;
   
  -            console.log("zeldaSlide");
               var player = Q('Player').first();
               var p = player.p;
   
  -            var rel_x = Q.state.get("player_x");
  -            var rel_y = Q.state.get("player_y");
  +            var rel_x = p.x;
  +            var rel_y = p.y;
   
               /* we know that the player is exiting, we have but
                * to determine the direction */
  
positive.code:     Q.rooms = {
          dimensions: { w: 2, h:  2 },
          items: ["room_0.tmx", "room_1.tmx", "room_2.tmx", "room_3.tmx"]
      };
  
      Q.state.updatePlayer = function (p) {
          var rel_x = p.x;
          var rel_y = p.y;
          var out_x = (0 < rel_x && rel_x < ROOM_WIDTH) ? false : true;
          var out_y = (0 < rel_y && rel_y < ROOM_WIDTH) ? false : true;
          var exiting = out_x || out_y;
  
          // if the least of rel x and rel y is negative, we are exiting
          // if the greatest of room_x - rel_x or y is negative we are exiting
          this.set("player_x", rel_x);
          this.set("player_y", rel_y);
          this.set("exiting", exiting);
      };
  
      /* this is a little weird: the room list is an array with
  
negative.code: 
              /* we slide room 2 to x: -224, y: 224 and room 3 to x: 0, y: 0 */
  
              stage.insert(new_room);
              stage.p.rooms[Q.state.get("room")] = new_room;
              current_room.animate({ x: -(direction[0]) * (ROOM_WIDTH / 2), y: -(direction[1]) * (ROOM_HEIGHT / 2) }, { callback: function () {
                  stage.remove(current_room); // I sort of have to use an anonymous function here
              }});
  
              new_room.animate({ x: 0, y:0 });
              player.animate({ x: rel_x, y: rel_y });
          };
  
          /* later, add this to a component called "zeldaSlide" */
  