added isTouchDevice