added touch support (very unstable)