better methods and events