To avoid confusion, you may want to have a diedOrRemoved(Entity*) handler (or just have two, I don't mind) for the signal that calls clearTarget. It's a bit strange to have clearTarget take some unused entity pointer.