If you just remove the draw() call from Cursor::handle() it will break the cursor. This is because the draw() call would now only happen when Cursor::setColor() was called. Cursor::setColor() is called in the Game constructor. At this point none of the game data is loaded, ie no palettes, so the cursor won't get rendered properly. This is why I overrode setPalette() and added a draw() call to update the cursor when the palette was set.