user interaction event handler