Road alignment, profile & corridor design
Design alignments, profiles and corridors meeting design criteria.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
- Typical applications
- Civil 3D · OpenRoads
- Class GUI-need label
G3· GUI-only
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R07.06.01.01-T01 Design a rural road alignment through control points within radius and length limits
Original instruction
In Civil 3D 2025 open fixtures/valley_road.dwg (EG surface, control points CP1-CP6). Create alignment 'Rd-A' (design speed 50 km/h, Rmin 100 m) passing within 0.5 m of all six control points with at least 3 circular curves and total length 2.1-2.6 km. Create its EG profile and a profile view, and export station/easting/northing/EG elevation every 20 m to out/rd_a.tsv.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
AP· API-sufficient- Interaction primitives
geom· Precise geometryclick· Point & clicknav· Pan/zoom/scroll- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
Harness exports LandXML via COM after save: alignment tangent continuity, all radii ≥100 m, ≥3 curves, length in range, CP offsets ≤0.5 m; EG profile sampled from surface; TSV rows every 20 m match LandXML ±0.01 m. .NET/LISP/Dynamo for Civil 3D disabled; command log checked.
Proposed partial credit
35% alignment geometry valid; 25% control points; 15% EG profile & view; 25% TSV
R07.06.01.01-T02 Lay a finished-grade profile meeting grade and K-value limits
Original instruction
For alignment 'Main St' in fixtures/main_st.dwg create layout profile 'FG' tying into existing elevations at 0+000 (102.35) and 1+240 (96.80): grades ≤6%, crest K ≥15, sag K ≥12, PVIs at least 80 m apart, and keep cut/fill within ±3 m of EG. Add vertical-curve labels to the profile view.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
geom· Precise geometryclick· Point & clickvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
LandXML: FG profile endpoints ±0.01 m; all grades ≤6%; K values per curve type; PVI spacing; sampled FG-EG within ±3 m every 10 m; labels present in profile view (DWG parse). APIs disabled.
Proposed partial credit
20% tie-ins; 25% grades; 25% K-values; 30% PVI spacing & cut/fill band
R07.06.01.01-T03 Build a corridor with daylighting and report cut and fill volumes
Original instruction
In fixtures/link_road.dwg build corridor 'Link' along alignment 'Link' and profile 'FG' using assembly 'Rural 2x3.5' (lanes 3.5 m at -2.5%, 1.5 m shoulders, daylight 1:2 cut, 1:3 fill) targeting EG, 10 m frequency. Create corridor surface, sample lines at 20 m, compute materials (average end area) and write total cut and fill to out/volumes.csv.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickgeom· Precise geometryvis· Visual judgment- Work product
WP07· Simulation result- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
Harness: corridor exists with that assembly/frequency; corridor surface boundary; sample lines count; cut/fill within 2% of reference; daylight slopes verified at sampled sections. APIs disabled.
Proposed partial credit
35% corridor built; 20% surface; 15% sample lines; 30% volumes within tolerance
R07.06.01.01-T04 Apply superelevation at 60 km/h with 6% emax and verify runoff lengths
Original instruction
For alignment 'Ridge Rd' in fixtures/ridge.dwg (design speed 60 km/h), calculate superelevation using AASHTO 2011, emax 6%, 2-lane crowned, pivot at centerline, 2/3 runoff on tangent. Ensure corridor 'Ridge' uses it and no superelevation critical stations overlap. Export the superelevation table to out/se.csv.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
se.csv full-super rates per curve equal AASHTO table values for radius/speed; runoff lengths ±1 m of reference; corridor cross-slopes at full super stations ±0.1%; no overlapping transitions. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
30% e rates; 30% runoff lengths; 25% corridor applied; 15% table export
R07.06.01.01-T05 Convert a sketch polyline into an alignment with spirals and pass design checks
Original instruction
In fixtures/bypass.dwg convert polyline 'BYPASS_SKETCH' into alignment 'Bypass' (80 km/h) replacing each PI with a spiral-curve-spiral (clothoid, A ≥ minimum for 80 km/h per docs/design_std.pdf, R ≥250 m). Apply the design check set 'STD80' and resolve all violations.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickgeom· Precise geometrytype· Text & forms- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
LandXML: each PI has spiral-curve-spiral with A and R ≥ limits; PI locations within 0.1 m of sketch PIs; design check set assigned and 0 violation markers. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
25% alignment from polyline; 40% SCS elements per PI; 20% design checks clean; 15% PI fidelity
R07.06.01.01-T06 Create an existing-ground surface from survey points with breaklines
Original instruction
In fixtures/site_survey.dwg import input/topo.csv (PNEZD) into point group 'TOPO', create TIN surface 'EG' from it with breaklines from layer V-TOPO-BRKL and outer boundary from polyline 'SURVEY_LIMIT'. Set 0.5/2.5 m contours style and save.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 2 / 5
Proposed verifier
LandXML surface: point count equals CSV; breaklines included; boundary applied; elevations at 30 test locations within 0.01 m of reference TIN; contour style intervals. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
30% points imported; 30% breaklines; 20% boundary; 20% style
R07.06.01.01-T07 Create plan-and-profile sheets with bands and standard labels
Original instruction
For alignment 'Main St' in fixtures/main_st_design.dwg add data bands (EG/FG elevations, cut/fill, stations at 20 m) to the profile view, apply label sets from fixtures/county_std.dwt, then use Plan Production to create view frames (1:500 plan, 1:500/1:50 profile) and sheets from template 'A1 Plan Profile' into out/sheets.dwg.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicknav· Pan/zoom/scrolltype· Text & forms- Work product
WP03· Visual layout- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
DWG parse: profile view band set includes required bands; label set styles applied; view frame group covers full alignment with no gaps; sheets.dwg layouts count equals frames; viewport scales exact. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
30% bands; 20% label sets; 25% view frames; 25% sheets
R07.06.01.01-T08 Design an at-grade T-intersection with curb returns and corridor regions
Original instruction
In fixtures/town_grid.dwg create an intersection between 'Main St' and 'Elm St' with 12 m curb returns, crowned primary road maintained, secondary road profile tied to primary edge, offset alignments for lane edges, and corridor regions generated by the Intersection wizard. Rebuild corridors with no errors and create the intersection surface.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickgeom· Precise geometryvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro applong· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Harness: intersection object exists; curb return radii 12±0.01; secondary profile meets primary edge elevation ±5 mm at tie-in; corridor rebuild 0 errors; surface without spikes (max slope <25%). Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
25% intersection created; 20% curb returns; 25% profile tie-in; 30% corridor clean & surface
R07.06.01.01-T09 Model a cul-de-sac bulb with widening and edge-of-pavement targets
Original instruction
At the end of 'Oak Ct' in fixtures/subdivision.dwg design a cul-de-sac: 15 m radius bulb, 6 m return radii, offset alignment/feature lines for edge of pavement, and corridor regions targeting them so the pavement surface follows a 2% fall to the gutter. Save and create surface 'FG-OakCt'.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
AP· API-sufficient- Interaction primitives
geom· Precise geometryclick· Point & clickvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
Harness: bulb radius 15±0.01, returns 6±0.01; corridor targets set to EOP geometry; sampled cross slopes 2±0.2%; surface continuous with no holes in bulb. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
30% bulb geometry; 30% targets; 25% cross slopes; 15% surface
R07.06.01.01-T10 Generate a mass-haul diagram and find balance points along a corridor
Original instruction
For corridor 'Hwy7' in fixtures/hwy7.dwg create sample lines every 20 m, compute materials with shrink 0.85 / swell 1.20, create a mass haul diagram with 400 m free haul, and write balance-point stations and total overhaul (m³·km) to out/masshaul.json. Produce cross-section sheets for 0+000 to 1+000.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP07· Simulation result- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
masshaul.json balance stations within 5 m and overhaul within 3% of reference; mass haul view object in DWG with 400 m free haul; ≥51 section views on sheets. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
20% sample lines & materials; 40% balance points; 25% overhaul; 15% section sheets
R07.06.01.01-T11 Lay out horizontal geometry with civil design standards in OpenRoads
Original instruction
In OpenRoads Designer 2024 open fixtures/county_rd.dgn. Using Horizontal Geometry tools with design standard 'Rural 70 km/h', create alignment 'CR-12' from the two tie points through the corridor polygon, using arcs with spiral transitions, and ensure no design-standard warnings remain. Define it as the active horizontal geometry with stationing start 10+000.
- Platforms
win· Windows- Applications
- OpenRoads
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
geom· Precise geometryclick· Point & clicknav· Pan/zoom/scroll- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
LandXML export: alignment within polygon; ties ±0.01 m; radii/spirals satisfy standard; start station 10+000; civil rule feature has standard attached and 0 warnings (grader parses DGN via OpenRoads batch). MicroStation/OpenRoads Python, VBA, key-in scripts and add-ins are disabled for the agent; writes to the DGN or out/ by any process other than OpenRoads Designer are flagged by a file audit log.
Proposed partial credit
30% geometry valid; 25% standard compliance; 20% ties & polygon; 25% stationing
R07.06.01.01-T12 Create and activate a vertical profile with design standards in OpenRoads
Original instruction
For alignment 'CR-12' in fixtures/county_rd_v2.dgn create a vertical profile from the existing terrain view, with grades ≤7%, crest K ≥23 and sag K ≥17 (70 km/h standard), tying into 154.20 at start and 149.85 at end. Set it active.
- Platforms
win· Windows- Applications
- OpenRoads
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
geom· Precise geometryclick· Point & clickvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
LandXML: active profile exists with tie elevations ±0.01; grades and K per type; 0 standard warnings. MicroStation/OpenRoads Python, VBA, key-in scripts and add-ins are disabled for the agent; writes to the DGN or out/ by any process other than OpenRoads Designer are flagged by a file audit log.
Proposed partial credit
25% tie-ins; 30% grades; 30% K-values; 15% active
R07.06.01.01-T13 Build an OpenRoads corridor with template drops and end conditions
Original instruction
In fixtures/county_rd_v3.dgn create corridor 'CR-12' using template 'Rural 2L Shoulder' from fixtures/templates.itl with drops every 10 m, a transition to 'Rural 2L Guardrail' between 10+400 and 10+520, and end conditions to existing terrain (cut 1:2, fill 1:3). Generate 3D model and earthwork volumes report.
- Platforms
win· Windows- Applications
- OpenRoads
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickgeom· Precise geometryvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
Harness reads corridor: template drops and transition stations exact; end condition slopes at sample sections; 3D mesh exists; cut/fill within 2% of reference. MicroStation/OpenRoads Python, VBA, key-in scripts and add-ins are disabled for the agent; writes to the DGN or out/ by any process other than OpenRoads Designer are flagged by a file audit log.
Proposed partial credit
25% corridor & drops; 25% transition; 20% end conditions; 30% volumes
R07.06.01.01-T14 Calculate superelevation sections and lanes in OpenRoads
Original instruction
For 'CR-12' in fixtures/county_rd_v3.dgn create superelevation sections and lanes, calculate with the AASHTO 2018 emax 8% preference file, assign to corridor 'CR-12' and export the superelevation report to out/se_report.xml.
- Platforms
win· Windows- Applications
- OpenRoads
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
Report: full super rates and transition stations match reference ±0.1%/±1 m; corridor uses the superelevation; lanes defined for both sides. MicroStation/OpenRoads Python, VBA, key-in scripts and add-ins are disabled for the agent; writes to the DGN or out/ by any process other than OpenRoads Designer are flagged by a file audit log.
Proposed partial credit
25% sections/lanes; 45% calculated values; 30% assigned to corridor
R07.06.01.01-T15 Grade a parking lot with feature lines tying into a road corridor
Original instruction
In fixtures/parking.dwg grade the 60×40 m lot boundary with feature lines: 2% min / 5% max slopes, drain to the two inlets marked, edges tying into the corridor surface 'Main FG' along the access. Create grading surface 'LOT' and paste into a composite 'FG-ALL'.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
geom· Precise geometryclick· Point & clickvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
Sample LOT surface on 1 m grid: slopes 2-5%; flow paths terminate at inlets (D8 flow); edge elevations along access within 10 mm of corridor; composite surface contains both. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
35% slope band; 30% drains to inlets; 20% tie-in; 15% composite surface
R07.06.01.01-T16 Control pair of T02: compute the vertical profile by script and write a station table
Original instruction
Control pair of T02. Without Civil 3D, write a Python script that reads the EG profile samples (input/main_st_eg.csv) and designs a PVI/vertical-curve profile meeting T02's limits, writing PVI list and FG elevations every 10 m to out/fg.csv and LandXML.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Python
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP04· 3D/spatial model- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Same checks as T02 on the LandXML (tie-ins, grades, K, spacing, ±3 m band). Comparison with GUI result.
Proposed partial credit
20% tie-ins; 25% grades; 25% K-values; 30% spacing & band
R07.06.01.01-T17 Re-route an alignment around a protected tree zone and rebuild everything
Original instruction
A protected tree zone (polygon 'TPZ' in fixtures/school_link.dwg) now requires 5 m clearance from the road edge. Revise alignment 'School Link' horizontally (keep 40 km/h standard and tie points) and adjust profile 'FG' so design checks still pass, then rebuild the corridor and update cut/fill volumes to out/volumes.csv.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
geom· Precise geometrydrag· Drag & dropvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro applong· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Corridor edge offset ≥5 m from TPZ along entire length; tie points ±0.01; design checks 0 violations; profile limits per standard; corridor rebuilt (no out-of-date flag); volumes within 2% of grader recompute. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
35% clearance achieved; 35% design checks & profile adjusted; 15% corridor rebuilt; 15% volumes
R07.06.01.01-T18 Check stopping sight distance on a crest and fix the vertical curve
Original instruction
Use Civil 3D's sight distance check on profile 'FG' of 'Hill Rd' (fixtures/hill_rd.dwg, 60 km/h, eye 1.08 m, object 0.60 m, SSD 85 m). One crest fails. Lengthen that vertical curve minimally so SSD is satisfied throughout and record the new K and length in out/ssd.txt.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
geom· Precise geometryclick· Point & clickvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
Profile: failing curve length increased to within 5% of minimal compliant length; other curves unchanged; grader SSD sweep passes; ssd.txt values match. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
30% failing curve identified; 50% compliant near-minimal fix; 20% report
R07.06.01.01-T19 Report station and offset of 40 utility poles relative to an alignment
Original instruction
In fixtures/utility_survey.dwg, report the station and offset (left negative) of each of the 40 pole blocks 'UP' relative to alignment 'Route 9' and export them with pole IDs to out/poles.csv.
- Platforms
win· Windows- Applications
- Civil 3D
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
AP· API-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP12· Answer/decision- Conditions
licensed· Licensed pro app- Proposed difficulty
- 2 / 5
Proposed verifier
poles.csv 40 rows; station/offset within 0.01 m of reference; sign convention correct. Civil 3D .NET API, AutoLISP, .scr scripts and Dynamo for Civil 3D are disabled for the agent; the DWG and outputs must come from a Civil 3D session, checked against its command log.
Proposed partial credit
70% values correct (scaled); 20% sign convention; 10% format
R07.06.01.01-T20 Produce an earthwork volume report for an OpenRoads corridor
Original instruction
For corridor 'Access Rd' in fixtures/access_rd.dgn create cross sections every 25 m, compute end-area volumes for cut, fill and topsoil strip 0.2 m, and export the report to out/earthwork.csv.
- Platforms
win· Windows- Applications
- OpenRoads
- Interfaces
desk· Desktop GUI- GUI need · task setting
G3· GUI-only- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP07· Simulation result- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
earthwork.csv totals within 2% of reference; section interval 25 m; topsoil class included. MicroStation/OpenRoads Python, VBA, key-in scripts and add-ins are disabled for the agent; writes to the DGN or out/ by any process other than OpenRoads Designer are flagged by a file audit log.
Proposed partial credit
30% sections created; 50% volumes; 20% topsoil
Mapped research references
Existing benchmark-to-class links from the research catalog. They are not record-level annotations, executions or product endorsements.