add parse_user_agent func