I'm seeing the tuple of object and message over and over again here.  I think the code could benefit from reifying it as a first class type, such as `SpecificMessage = Struct.new(:object, :message)`