         var xMove :int = (_pendingMoveBy == null ? 0 : _pendingMoveBy.x);
         var yMove :int = (_pendingMoveBy == null ? 0 : _pendingMoveBy.y);
 
-        var minX :int = xMove;
-        var maxX :int = size.x + xMove;
-        var minY :int = yMove;
-        var maxY :int = BOTTOM_BUFFER + size.y + yMove;
+        var minX :int = xMove - (buffer ? size.x/2 : 0);
+        var maxX :int = size.x + xMove + (buffer ? size.x/2 : 0);
+        var minY :int = yMove - (buffer ? size.x/2 : 0);
+        var maxY :int = BOTTOM_BUFFER + size.y + yMove + (buffer ? size.x/2 : 0);
 
         var topLeft :Point = _isoView.localToIso(new Point(minX, minY));
         var topRight :Point = _isoView.localToIso(new Point(maxX, minY));


    protected var _objScene :IsoScene;

    protected var _blocks :Map = Maps.newMapOf(int);

    protected var _pendingMoveBy :Point;

    protected var _pendingBlocks :Set = Sets.newSetOf(SceneBlock);
    protected var _readyBlocks :Set = Sets.newSetOf(SceneBlock);

    protected var _masks :Map = Maps.newMapOf(int);
    protected var _fringes :Map = new WeakValueMap(Maps.newMapOf(FringeTile));

    protected var _resStartTime :int;

    protected var _skipComplete :Boolean

    protected const DEF_WIDTH :int = 985;

        }

        // Now, take out any old blocks no longer in our valid blocks.
        var blocks :Set = getBaseBlocks(true);
        for each (var baseKey :int in _blocks.keys()) {
            if (!blocks.contains(baseKey)) {
                _blocks.remove(baseKey).release();
            }
        }
        // And any prefetch blocks that are bogus can go away too.
        for each (var preKey :int in _prefetchedBlocks.keys()) {
            if (!blocks.contains(preKey)) {
                _prefetchedBlocks.remove(preKey);
            }
        }

        trace("Scene Block Resolution took: " + (getTimer() - _resStartTime) + "ms");

        // Let's setup some prefetching...
        blocks.forEach(function(blockKey :int) :void {
            if (!_blocks.containsKey(blockKey)) {
                var sceneBlock :SceneBlock = createSceneBlock(blockKey);
                _pendingPrefetchBlocks.push(sceneBlock);
            }
        });

        maybePrefetchABlock();
    }

    protected function maybePrefetchABlock () :void
    {
        if (_pendingPrefetchBlocks.length != 0) {
            _pendingPrefetchBlocks.shift().resolve(_ctx, _model, this, prefetchBlockResolved);
        }
    }

    protected function prefetchBlockResolved (resolved :SceneBlock) :void
    {
        _prefetchedBlocks.put(resolved.getKey(), resolved);

        // If we haven't moved on to resolve a new region, let's try another block.
        if (_pendingBlocks.size() == 0) {
            DelayUtil.delayFrame(function() :void {
                maybePrefetchABlock();
            });
        }
    }

    protected function refreshScene () :void
