 
     protected var _objScene :IsoScene;
 
+    /** All of the active blocks that are part of the scene. */
     protected var _blocks :Map = Maps.newMapOf(int);
 
+    /** If we're resolving in preparation for moving, this is how much we'll move by when ready. */
     protected var _pendingMoveBy :Point;
 
+    /** Required blocks we're working on resolving. */
     protected var _pendingBlocks :Set = Sets.newSetOf(SceneBlock);
+
+    /** Blocks that are resolved and ready for adding to the scene. */
     protected var _readyBlocks :Set = Sets.newSetOf(SceneBlock);
+
+    /** The queue of blocks we'd like to prefetch when we have a chance. */
+    protected var _pendingPrefetchBlocks :Array = [];
+
+    /** The blocks already prefetched and ready to go if we need them. */
+    protected var _prefetchedBlocks :Map = Maps.newMapOf(int);
 
     protected var _masks :Map = Maps.newMapOf(int);
     protected var _fringes :Map = new WeakValueMap(Maps.newMapOf(FringeTile));
 
+    /** What time did we start the current scene resolution. */
     protected var _resStartTime :int;
 
+    /** If any block happens to resolve should we currently skip calling completion. */
     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();
        for each (var baseKey :int in _blocks.keys()) {
            if (!blocks.contains(baseKey)) {
                _blocks.remove(baseKey).release();
            }
        }

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

    protected function refreshScene () :void

        var xMove :int = (_pendingMoveBy == null ? 0 : _pendingMoveBy.x);
        var yMove :int = (_pendingMoveBy == null ? 0 : _pendingMoveBy.y);

        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));
