touchaction refactor