Thanks The CBitmap is a class of mine: should probably call it CMyBitmap ? it has it's own constructor, loader and draw function. So A CMyTiledBitmap is a CMyBitmap with some extra members (for the tiling info). So, If I change all occurrences of CMyBitmap with CMyTiledBitmap in a preexisting program, the program will still work, but will have greater resource overhead. So Why do I make the CMyBitmap constructor virtual ? Cheers If sex is a pain in the ass, then you are doing it wrong!