cleaned and added touch event