I think that we should break this up into several fireEvent methods, rather than a single de-typed method.