seperate interaction event handling