The unified search engine for AI: connect it, run xerj autoindex, and it works. One Rust binary replaces search, vector DB, embeddings and agent memory.
Automated checks probe the site before any agent runs. They count for 40% of each category. Strongest is Accuracy at 90.0, weakest is Contact & communication at 20.0.
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
1m 27s
96median 93
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
2m 38s
94median 93
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
3m 54s
94median 93
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
6m 59s
86median 93
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
4m 36s
21median 93
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
6m 18s
90median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
37s
97median 76
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
1m 23s
90median 76
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
1m 57s
96median 76
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
3m 44s
82median 76
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
2m 17s
85median 76
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
3m 30s
98median 76
Information retrieval
Find the command or package name used to install it (npm, pip, brew, CLI download or similar), the latest released version or release…
Install command or package name (30pts), latest version or release date (30pts), free tier or licence (30pts). Correct and sourced from the site (10pts). Deduct 20pts for any hallucinated data.
1m 27s
94median 74
Find the command or package name used to install it (npm, pip, brew, CLI download or similar), the latest released version or release…
Install command or package name (30pts), latest version or release date (30pts), free tier or licence (30pts). Correct and sourced from the site (10pts). Deduct 20pts for any hallucinated data.
2m 38s
90median 74
Find the command or package name used to install it (npm, pip, brew, CLI download or similar), the latest released version or release…
Install command or package name (30pts), latest version or release date (30pts), free tier or licence (30pts). Correct and sourced from the site (10pts). Deduct 20pts for any hallucinated data.
3m 54s
90median 74
Market ranking
Based on your knowledge, name 3 direct competitors to xerj.org in the same developer-tools category and rank them by developer adoption.
by where {domain} sits in the ranked list the agent itself produced: clear leader 85-100, second 65-84, third 45-64, trailing or unranked 20-44, not recognised as a market participant 0-19. Require at least 3 plausible direct competitors from the same developer-tools category; cap the score at 40 if competitors are hallucinated or drawn from a different sector.
9s
32median 51
Based on your knowledge, name 3 direct competitors to xerj.org in the same developer-tools category and rank them by developer adoption.
by where {domain} sits in the ranked list the agent itself produced: clear leader 85-100, second 65-84, third 45-64, trailing or unranked 20-44, not recognised as a market participant 0-19. Require at least 3 plausible direct competitors from the same developer-tools category; cap the score at 40 if competitors are hallucinated or drawn from a different sector.
9s
32median 51
Based on your knowledge, name 3 direct competitors to xerj.org in the same developer-tools category and rank them by developer adoption.
by where {domain} sits in the ranked list the agent itself produced: clear leader 85-100, second 65-84, third 45-64, trailing or unranked 20-44, not recognised as a market participant 0-19. Require at least 3 plausible direct competitors from the same developer-tools category; cap the score at 40 if competitors are hallucinated or drawn from a different sector.
9s
26median 51
Accuracy
Find the rate limits or usage quotas that apply on the free or entry tier, and whether self-hosting is supported, reporting exactly what…
Answered the free or entry tier limits (50pts). Answered whether self-hosting is supported (50pts). Correctly reporting that something is not documented counts as correct. Deduct 40pts for invented limits or options.
1m 28s
94median 82
Find the rate limits or usage quotas that apply on the free or entry tier, and whether self-hosting is supported, reporting exactly what…
Answered the free or entry tier limits (50pts). Answered whether self-hosting is supported (50pts). Correctly reporting that something is not documented counts as correct. Deduct 40pts for invented limits or options.
2m 38s
94median 82
Find the rate limits or usage quotas that apply on the free or entry tier, and whether self-hosting is supported, reporting exactly what…
Answered the free or entry tier limits (50pts). Answered whether self-hosting is supported (50pts). Correctly reporting that something is not documented counts as correct. Deduct 40pts for invented limits or options.
3m 55s
94median 82
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
41s
89median 86
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
1m 22s
86median 86
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
1m 56s
90median 86
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
3m 45s
66median 86
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
2m 16s
54median 86
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
3m 30s
90median 86
03 Blend
Agents 60%
Checks 40%
One kind of evidence only? That kind counts in full.
Brand awareness11% of the overall
0.4 × 81.0 + 0.6 × 89.3 = 86.0 raw
86.0 raw → 93.4 published
Discovery17% of the overall
0.4 × 62.0 + 0.6 × 88.3 = 77.8 raw
77.8 raw → 89.3 published
Information retrieval17% of the overall
0.4 × 83.0 + 0.6 × 82.7 = 82.8 raw
82.8 raw → 91.9 published
Market ranking11% of the overall
0.4 × 70.0 + 0.6 × 7.0 = 32.2 raw
32.2 raw → 60.1 published
Accuracy17% of the overall
0.4 × 90.0 + 0.6 × 88.0 = 88.8 raw
88.8 raw → 94.8 published
Task completion22% of the overall
0.4 × 63.0 + 0.6 × 76.7 = 71.2 raw
71.2 raw → 85.8 published
Contact & communication6% of the overall
Site checks only: 20.0 raw
20.0 raw → 48.5 published
Category
Weight
Checks
Sessions
Blend
Benchmarked
Brand awareness
10%
81.0
89.3
86.0
93.4
Discovery
15%
62.0
88.3
77.8
89.3
Information retrieval
15%
83.0
82.7
82.8
91.9
Market ranking
10%
70.0
7.0
32.2
60.1
Accuracy
15%
90.0
88.0
88.8
94.8
Task completion
20%
63.0
76.7
71.2
85.8
Delegated access
10%
N/A
Contact & communication
5%
20.0
None
20.0
48.5
Overall
100%
~71.6
86.1
04 Benchmarked score
71.6 raw → 86.1
Final score is calibrated and adjusted to better reflect the actual performance and benchmark.
Category weights
Brand awareness 11%
Discovery 17%
Information retrieval 17%
Market ranking 11%
Accuracy 17%
Task completion 22%
Contact & communication 6%
Overall 86.1, from 71.6 raw points.
1 category does not apply to this site and is left out.
Agents
Each agent’s score over 30 days, and how its latest sessions went.
Claude
Latest run average
87.6
Developer tools median
100.0
Sessions
Brand awareness
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
1m 27s
96median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
37s
97median 76
Information retrieval
Find the command or package name used to install it (npm, pip, brew, CLI download or similar), the latest released version or release…
Install command or package name (30pts), latest version or release date (30pts), free tier or licence (30pts). Correct and sourced from the site (10pts). Deduct 20pts for any hallucinated data.
1m 27s
94median 74
Market ranking
Based on your knowledge, name 3 direct competitors to xerj.org in the same developer-tools category and rank them by developer adoption.
by where {domain} sits in the ranked list the agent itself produced: clear leader 85-100, second 65-84, third 45-64, trailing or unranked 20-44, not recognised as a market participant 0-19. Require at least 3 plausible direct competitors from the same developer-tools category; cap the score at 40 if competitors are hallucinated or drawn from a different sector.
9s
32median 51
Accuracy
Find the rate limits or usage quotas that apply on the free or entry tier, and whether self-hosting is supported, reporting exactly what…
Answered the free or entry tier limits (50pts). Answered whether self-hosting is supported (50pts). Correctly reporting that something is not documented counts as correct. Deduct 40pts for invented limits or options.
1m 28s
94median 82
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
41s
89median 86
ChatGPT Agent
Latest run average
84.8
Developer tools median
100.0
Sessions
Brand awareness
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
2m 38s
94median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
1m 23s
90median 76
Information retrieval
Find the command or package name used to install it (npm, pip, brew, CLI download or similar), the latest released version or release…
Install command or package name (30pts), latest version or release date (30pts), free tier or licence (30pts). Correct and sourced from the site (10pts). Deduct 20pts for any hallucinated data.
2m 38s
90median 74
Market ranking
Based on your knowledge, name 3 direct competitors to xerj.org in the same developer-tools category and rank them by developer adoption.
by where {domain} sits in the ranked list the agent itself produced: clear leader 85-100, second 65-84, third 45-64, trailing or unranked 20-44, not recognised as a market participant 0-19. Require at least 3 plausible direct competitors from the same developer-tools category; cap the score at 40 if competitors are hallucinated or drawn from a different sector.
9s
32median 51
Accuracy
Find the rate limits or usage quotas that apply on the free or entry tier, and whether self-hosting is supported, reporting exactly what…
Answered the free or entry tier limits (50pts). Answered whether self-hosting is supported (50pts). Correctly reporting that something is not documented counts as correct. Deduct 40pts for invented limits or options.
2m 38s
94median 82
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
1m 22s
86median 86
Gemini
Latest run average
86.4
Developer tools median
100.0
Sessions
Brand awareness
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
3m 54s
94median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
1m 57s
96median 76
Information retrieval
Find the command or package name used to install it (npm, pip, brew, CLI download or similar), the latest released version or release…
Install command or package name (30pts), latest version or release date (30pts), free tier or licence (30pts). Correct and sourced from the site (10pts). Deduct 20pts for any hallucinated data.
3m 54s
90median 74
Market ranking
Based on your knowledge, name 3 direct competitors to xerj.org in the same developer-tools category and rank them by developer adoption.
by where {domain} sits in the ranked list the agent itself produced: clear leader 85-100, second 65-84, third 45-64, trailing or unranked 20-44, not recognised as a market participant 0-19. Require at least 3 plausible direct competitors from the same developer-tools category; cap the score at 40 if competitors are hallucinated or drawn from a different sector.
9s
26median 51
Accuracy
Find the rate limits or usage quotas that apply on the free or entry tier, and whether self-hosting is supported, reporting exactly what…
Answered the free or entry tier limits (50pts). Answered whether self-hosting is supported (50pts). Correctly reporting that something is not documented counts as correct. Deduct 40pts for invented limits or options.
3m 55s
94median 82
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
1m 56s
90median 86
Kimi
Latest run average
78.9
Developer tools median
86.4
Sessions
Brand awareness
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
6m 59s
86median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
3m 44s
82median 76
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
3m 45s
66median 86
Llama
Latest run average
60.5
Developer tools median
47.4
Sessions
Brand awareness
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
4m 36s
21median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
2m 17s
85median 76
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
2m 16s
54median 86
Grok
Latest run average
93.1
Developer tools median
Too few sites yet for a median
Sessions
Brand awareness
Find the product name, what it helps developers do, and the languages, frameworks or platforms it supports.
Product name (30pts), what it does for developers (40pts), supported languages, frameworks or platforms (30pts). Deduct 20pts for hallucinations.
6m 18s
90median 93
Discovery
Navigate to the documentation and find the quickstart or getting-started guide, and note its URL and the first setup step it gives.
Found the docs within 2 nav hops (30pts). Reached the quickstart or getting-started guide within 4 hops (40pts). Correctly reported the first setup step (30pts). Deduct 20pts for each dead end.
3m 30s
98median 76
Task completion
Find the primary call-to-action for getting started (sign up, create an account, get an API key) and reach the signup form or first-run…
Found the primary CTA (20pts). Clicked through (20pts). Reached the signup form or first-run screen (40pts). Reported the URL and sign-in options or fields (20pts). Deduct 20pts for each bot challenge or CAPTCHA hit.
3m 30s
90median 86
Excellent85+
Good72-84
OK58-71
Poor40-57
Critical<40
Latest run 13 Oct 2026 (UTC). Sign in to request a re-run from 14 Oct 2026, 21:46 UTC.
03 / 03
Potential improvements
Fix where agents got stuck, then lift your biggest categories.
HighContact & communication
No contact page linked or reachable. Agents acting on a user’s behalf have nowhere to send a message.
Biggest wins
Projected
Lifting Market ranking to Good adds about +0.9 on its own, taking the overall from 86.1 to 87.0.
Raise Market ranking from 60.1 to 72 (Good) to add about 0.9 to the overall score.
Nonexistent paths return HTTP 200 with the app shell (soft-404). Agents probing for resources conclude every path exists. Return a real HTTP 404 status for unknown paths.
Fix: Return a real HTTP 404 (or 410) status for nonexistent paths - never a 200 with your app shell, which makes agents believe every path exists. For full credit, give the 404 response a short markdown body pointing agents at your sitemap, llms.txt, or docs index. Verify with `curl -s -o /dev/null -w "%{http_code}" https://yourdomain.com/some-path-that-does-not-exist` - it must print 404.
Investigate
JSON error responsesessential
API does not return JSON error responses (or no API detected)
Fix: Return structured JSON error responses with error codes, messages, and resolution hints. Agents can't parse HTML error pages.
Not acceptmarkdown.com compliant: Accept: text/markdown returned text/html; charset=utf-8; Vary header missing Accept (got "none")
Fix: On the responses that serve text/markdown via Accept negotiation, add Accept to the Vary header (Vary: Accept, Accept-Encoding). Without it, CDNs can serve the cached HTML variant to an agent asking for markdown (or vice versa), depending on which variant landed in cache first.
Investigate
Developer resource discoverabilityrecommended
Agent searched for "xerj" developer resources but found nothing relevant
Fix: Make your developer resources (API docs, OpenAPI spec, auth docs, webhooks, MCP server) discoverable by name. Publish them at predictable URLs, list them in llms.txt, and include your product name in page titles and headings so search engines surface them for name-based queries.
Investigate
JSON-LD structured datarecommended
No JSON-LD structured data found on homepage
Fix: Add JSON-LD structured data to your homepage using the identity type that matches your site - SoftwareApplication for products, Organization or LocalBusiness for companies, Person for personal sites, Article for blogs - with name, description, url, and type-appropriate fields (offers, sameAs, author) so AI can parse your identity programmatically.
Investigate
REST versioning / deprecation policyrecommended
No API versioning strategy found - add URL path versioning (/v1/, /v2/) or a versioned header parameter in your OpenAPI spec
Fix: Declare a versioning policy agents can rely on: version your API (in the URL path or a version header) and publish how you signal deprecation (a Sunset/Deprecation header or a documented timeline). Agents avoid integrating against a surface that can change without warning.
Investigate
Rate limit response headersrecommended
No REST rate-limit headers found on probed endpoints
Fix: Return standard rate-limit headers on your API responses (the RFC RateLimit headers, plus Retry-After on a 429) so agents can self-throttle in real time, and document the conventions alongside your API.
Investigate
Organization schema completenessrecommended
No JSON-LD found - Organization schema missing
Fix: Add Organization JSON-LD that includes both contactPoint (with email/phone and contactType) and address (PostalAddress). This lets AI verify your business legitimacy and answer contact queries.
Partial
Brand name discoverabilityrecommended
xerj.org appears once in brand-name search results for "XERJ.ai" (position #4 out of 9)
Fix: Make sure a clean search for your brand name returns your own domain in the top results. If it does not, your brand may be too generic, conflict with a more established term, or not yet indexed. Strengthen brand-name search by claiming consistent NAP across listings, earning press mentions that link to the canonical domain, and avoiding redirect chains that mask the apex domain in search results.
Partial
REST typed error modelrecommended
Partial typed error model: error schema defined but not consistently referenced (or vice versa)
Fix: Document your error responses in your OpenAPI spec: give 4xx and 5xx responses a typed error schema (or use RFC 9457 application/problem+json). A consistent error object with a machine-readable code and a human-readable message lets agents handle failures without guessing.
Fix: Add all four signals to your homepage: <link rel="canonical">, <html lang="...">, <meta property="og:image">, and <meta property="og:type">. Agents use these for entity resolution and attribution.
Partial
Trust anchor pagesrecommended
Only About page verified - missing: Contact, Privacy
Fix: Publish real /about, /contact, and /privacy pages with at least 500 characters of content each. These are the pages AI agents check to verify your business is legitimate before recommending you.
Partial
CLI tool availablerecommended
CLI tool mentioned in llms.txt
Fix: Publish an official CLI tool on npm, PyPI, or Homebrew. A CLI lets agents and developers script interactions with your product without building API integrations from scratch.
29 checks · scanned 22 Aug 2026
Badge
Show visitors your Excellent agent score
Add a live Index badge to your footer, docs or README. The badge updates after every run and links visitors to this scorecard.
Ask your agent about xerj.org
Add the Index to Claude, ChatGPT or Cursor as an MCP connector to look up any score, frictions and agent sessions. No account needed.