improve isMobile detection