added additional user agent parsing