Finally fully working touch events