use events directly