Rather than expose execCommand, abstract it as an event that can be customized