removed references to log(); updated emit() to return event, extend 'provenance' and add 'timestamp' (if not present)