redone using bitmaps