updated for touch events