add event support, testing, lint fixes, documentation