add optional reason arg to various event methods (#18)