SEO audit for whatslearning.com.au
What's Learning
Health 65/100 (fair) · 14 pages crawled · generated 2026-07-29
Download Markdown report (feed to ChatGPT / Claude / Cursor)AI homeschool learning companion that turns everyday activities into NESA-aligned evidence for NSW families.
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Content | 72 | 0 | 13 | 0 |
| Headings | 72 | 0 | 13 | 0 |
| Performance | 72 | 0 | 13 | 27 |
| Rendering | 72 | 0 | 13 | 0 |
| Links | 74 | 0 | 12 | 0 |
| Crawlability | 96 | 0 | 2 | 0 |
| Cache | 100 | 0 | 0 | 13 |
| Duplicate | 100 | 0 | 0 | 12 |
| Security | 100 | 0 | 0 | 13 |
| Structured Data | 100 | 0 | 0 | 13 |
| Titles | 100 | 0 | 0 | 8 |
Warnings (7 rules)
warning Thin content (low word count)
Rule content.thin · Content · 13 occurrence(s)
- https://www.whatslearning.com.au/ — 0 words
- https://www.whatslearning.com.au/401 — 0 words
- https://www.whatslearning.com.au/404 — 0 words
- https://www.whatslearning.com.au/contact-us — 0 words
- https://www.whatslearning.com.au/faq — 0 words
- https://www.whatslearning.com.au/forgot-password — 0 words
- https://www.whatslearning.com.au/link-expired — 0 words
- https://www.whatslearning.com.au/login — 0 words
- https://www.whatslearning.com.au/outcomes-browser — 0 words
- https://www.whatslearning.com.au/outcomes-details — 0 words
- https://www.whatslearning.com.au/privacy — 0 words
- https://www.whatslearning.com.au/request-access — 0 words
- https://www.whatslearning.com.au/terms-and-conditions — 0 words
warning Incomplete/empty response after retries (likely transient — re-crawl)
Rule fetch.incomplete · Crawlability · 1 occurrence(s)
- https://www.whatslearning.com.au/reset-password — HTTP 200, 3 words after 3 attempts
warning Missing <h1>
Rule h1.missing · Headings · 13 occurrence(s)
- https://www.whatslearning.com.au/
- https://www.whatslearning.com.au/401
- https://www.whatslearning.com.au/404
- https://www.whatslearning.com.au/contact-us
- https://www.whatslearning.com.au/faq
- https://www.whatslearning.com.au/forgot-password
- https://www.whatslearning.com.au/link-expired
- https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/outcomes-browser
- https://www.whatslearning.com.au/outcomes-details
- https://www.whatslearning.com.au/privacy
- https://www.whatslearning.com.au/request-access
- https://www.whatslearning.com.au/terms-and-conditions
warning Orphan page (no internal inlinks)
Rule links.orphan · Links · 12 occurrence(s)
- https://www.whatslearning.com.au/401 — no internal links point here
- https://www.whatslearning.com.au/404 — no internal links point here
- https://www.whatslearning.com.au/contact-us — no internal links point here
- https://www.whatslearning.com.au/faq — no internal links point here
- https://www.whatslearning.com.au/forgot-password — no internal links point here
- https://www.whatslearning.com.au/link-expired — no internal links point here
- https://www.whatslearning.com.au/login — no internal links point here
- https://www.whatslearning.com.au/outcomes-browser — no internal links point here
- https://www.whatslearning.com.au/outcomes-details — no internal links point here
- https://www.whatslearning.com.au/privacy — no internal links point here
- https://www.whatslearning.com.au/request-access — no internal links point here
- https://www.whatslearning.com.au/terms-and-conditions — no internal links point here
warning Render-blocking script in <head> (no defer/async)
Rule perf.render_blocking · Performance · 13 occurrence(s)
- https://www.whatslearning.com.au/ — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/401 — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/404 — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/contact-us — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/faq — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/forgot-password — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/link-expired — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/login — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/outcomes-browser — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/outcomes-details — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/privacy — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/request-access — 1 render-blocking <script> in <head> (add defer/async or use type=module)
- https://www.whatslearning.com.au/terms-and-conditions — 1 render-blocking <script> in <head> (add defer/async or use type=module)
warning Content only rendered by JavaScript (invisible to non-JS crawlers & AI)
Rule rendering.js_shell · Rendering · 13 occurrence(s)
- https://www.whatslearning.com.au/ — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/401 — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/404 — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/contact-us — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/faq — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/forgot-password — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/link-expired — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/login — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/outcomes-browser — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/outcomes-details — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/privacy — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/request-access — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://www.whatslearning.com.au/terms-and-conditions — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
warning Soft 404 (200 OK but content signals not found)
Rule status.soft_404 · Crawlability · 1 occurrence(s)
- https://www.whatslearning.com.au/404 — HTTP 200 but only 0 words and a not-found marker ("page not found") in the title/H1 — return a real 404/410 or add content
Notices (8 rules)
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 13 occurrence(s)
- https://www.whatslearning.com.au/ — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/401 — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/404 — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/contact-us — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/faq — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/forgot-password — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/link-expired — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/login — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/outcomes-browser — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/outcomes-details — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/privacy — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/request-access — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
- https://www.whatslearning.com.au/terms-and-conditions — Cache-Control: no-cache, no-store, max-age=0, must-revalidate
notice Duplicate meta description across pages
Rule duplicate.meta_desc · Duplicate · 12 occurrence(s)
- https://www.whatslearning.com.au/ — meta description shared by 12 pages: https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login, https://www.whatslearning.com.au/outcomes-details
- https://www.whatslearning.com.au/401 — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/404 — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/contact-us — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/faq — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/forgot-password — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/link-expired — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/login, https://www.whatslearning.com.au/outcomes-details
- https://www.whatslearning.com.au/login — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/outcomes-details
- https://www.whatslearning.com.au/outcomes-details — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/privacy — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/request-access — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/terms-and-conditions — meta description shared by 12 pages: https://www.whatslearning.com.au/, https://www.whatslearning.com.au/link-expired, https://www.whatslearning.com.au/login
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 13 occurrence(s)
- https://www.whatslearning.com.au/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/401 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/404 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/contact-us — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/faq — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/forgot-password — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/link-expired — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/login — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/outcomes-browser — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/outcomes-details — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/privacy — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/request-access — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://www.whatslearning.com.au/terms-and-conditions — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
notice No Last-Modified header (no conditional GET for unchanged pages)
Rule perf.no_last_modified · Performance · 13 occurrence(s)
- https://www.whatslearning.com.au/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/401 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/404 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/contact-us — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/faq — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/forgot-password — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/link-expired — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/login — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/outcomes-browser — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/outcomes-details — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/privacy — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/request-access — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://www.whatslearning.com.au/terms-and-conditions — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
notice Slow server response
Rule perf.slow_response · Performance · 1 occurrence(s)
notice No structured data detected
Rule schema.none · Structured Data · 13 occurrence(s)
- https://www.whatslearning.com.au/
- https://www.whatslearning.com.au/401
- https://www.whatslearning.com.au/404
- https://www.whatslearning.com.au/contact-us
- https://www.whatslearning.com.au/faq
- https://www.whatslearning.com.au/forgot-password
- https://www.whatslearning.com.au/link-expired
- https://www.whatslearning.com.au/login
- https://www.whatslearning.com.au/outcomes-browser
- https://www.whatslearning.com.au/outcomes-details
- https://www.whatslearning.com.au/privacy
- https://www.whatslearning.com.au/request-access
- https://www.whatslearning.com.au/terms-and-conditions
notice Missing recommended security headers
Rule security.missing_headers · Security · 13 occurrence(s)
- https://www.whatslearning.com.au/ — CSP
- https://www.whatslearning.com.au/401 — CSP
- https://www.whatslearning.com.au/404 — CSP
- https://www.whatslearning.com.au/contact-us — CSP
- https://www.whatslearning.com.au/faq — CSP
- https://www.whatslearning.com.au/forgot-password — CSP
- https://www.whatslearning.com.au/link-expired — CSP
- https://www.whatslearning.com.au/login — CSP
- https://www.whatslearning.com.au/outcomes-browser — CSP
- https://www.whatslearning.com.au/outcomes-details — CSP
- https://www.whatslearning.com.au/privacy — CSP
- https://www.whatslearning.com.au/request-access — CSP
- https://www.whatslearning.com.au/terms-and-conditions — CSP
notice Title is very short
Rule title.too_short · Titles · 8 occurrence(s)
- https://www.whatslearning.com.au/404 — 14 chars
- https://www.whatslearning.com.au/contact-us — 10 chars
- https://www.whatslearning.com.au/faq — 3 chars
- https://www.whatslearning.com.au/link-expired — 12 chars
- https://www.whatslearning.com.au/login — 6 chars
- https://www.whatslearning.com.au/outcomes-browser — 13 chars
- https://www.whatslearning.com.au/privacy — 7 chars
- https://www.whatslearning.com.au/request-access — 14 chars
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://www.whatslearning.com.au/ What's Learning |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/401 Permission denied |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/404 Page not found |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/contact-us contact-us |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/faq FAQ |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/forgot-password Forgot password |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/link-expired Link expired |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/login Log in |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/outcomes-browser Learn at Home |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/outcomes-details outcomes-details |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/privacy Privacy |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/request-access request-access |
200 | yes | 0 | 0 |
| https://www.whatslearning.com.au/reset-password | 200 | yes | 3 | 0 |
| https://www.whatslearning.com.au/terms-and-conditions Terms and conditions |
200 | yes | 0 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.