Add touch handling, and tighten up controls