first pass at touch handling