added touch events (Thanks Ryan H.)