BitmapData abstraction attempt