     /** The field we reuse to create character bitmaps. */
     protected var _charField :TextField;
 
-    /** The character bitmaps for each location. */
-    protected var _bitmaps :Array;
-
-    /** A pool of bitmaps to reuse. */
-    protected var _bitmapPool :Array = new Array();
+    /** Big ol' bitmap. */
+    protected var _bitmap :Bitmap;
 
     /** The cached bitmap data for each character. */
-    protected var _bitmapData :Object;
+    protected var _bitmapData :Object = new Object();
 
     /** The width and height of the display in characters. */
     protected var _width :int, _height :int;
 
     /** The width and height of each character. */
     protected var _charWidth :int, _charHeight :int;
-
-    /** The location of the character grid. */
-    protected var _x :int, _y :int;
 
     /** The socket via which we communicate with the server. */
     protected var _socket :Socket;

        _width = loaderInfo.width / _charWidth;
        _height = loaderInfo.height / _charHeight;

        // center the display
        _x = (loaderInfo.width - (_charWidth * _width)) / 2;
        _y = (loaderInfo.height - (_charHeight * _height)) / 2;

        // create and initialize the combined contents array
        _contents = new Array(_width * _height);
        for (var ii :int = 0; ii < _contents.length; ii++) {
            _contents[ii] = 0x20;
        }

        // create the bitmap data cache and bitmap array
        _bitmapData = new Object();
        _bitmaps = new Array(_width * _height);

        // add the context menu to change colors
        contextMenu = new ContextMenu();

        }
        _bitmapData = new Object();

        // invalidate the contents, make everything dirty, refresh
        for (var ii :int = 0; ii < _contents.length; ii++) {
            _contents[ii] = -1;
        }
        _dirty.setTo(0, 0, _width, _height);
        updateDisplay();
    }

    /**
