SlideShare a Scribd company logo
1 of 22
Tips and Techniques
2018-10-10 - Ted Spence - Director, AvaTax
API
• Learned programming in Microsoft Basic
on a Commodore PET
• BA Philosophy, Cal State Fullerton
• Built Avalara’s sales tax return filing
system
• Started building AvaTax REST API in
2016
Documentation is how we
program people
People aren’t machines
We all skim the material
Different learning styles
To write good docs,
everyone must care
Let’s see how we can do it
Write down everything you’re told
Leave documentation for the next person who
gets hired
Wikis are a great way to get started
Answer every support question with docs
If you don’t have docs for that question,
write!
Great way to find topics for blog posts
… okay, maybe write docs after you get the
same question three times
Your requirements are your docs
If they’re too complex they help
nobody
This is why agile “Stories” are
helpful
It’s okay to just edit for someone else
Link docs together (wikis are great)
Give constructive feedback
Did they forget to mention something?
Can you rephrase it?
Don’t remove something
you saw twice
People find docs in
different ways
Original copy for AvaTax “SalesOrder”
objects:
Sales Order, estimate or quote (default)
This is a temporary document type and is not
saved in tax history.
Sales Order,
estimate or quote
(default)
“Represents an
estimate, or a sales
order, or a quote.”
Lead with the most common word!
Use full sentences!
Add purpose:
“This document type is used before a sale
has occurred to estimate the final amount of
tax to be paid when the sale is completed.”
Compare to Sales Invoice:
“This document type is used to record a
final transaction and calculate the final
tax amount with all necessary information.”
Keep track of what people get confused about
“For a sales order, the `companyCode` of the
transaction refers to the seller and the
`customerVendorCode` refers to the buyer.”
Use links to your
advantage
Remind people of good
stuff
Examples help a lot!
“How should I use this?”
I need to know why
Is this right for me?
Teach me best practices?
You need a User Guide
“I can’t remember …”
I know kinda what I want
Not sure about some
detail
Maybe need an example
You need Reference Docs
• Focus on facts
• Bullet points
• Methods and
Models
• Explanations of
fields and
parameters
• Tell the story of
how the APIs fit
together
• When do you use
each one, and why
• Link to reference
rather than too
much detail
If you write good docs,
you’ll feel like you’re
repeating yourself
It’s okay!
Some customers struggle
with the basics
Others need details
Ted Spence
https://tedspence.com
Twitter: ted_spence
LinkedIn: Ted Spence
ted@spence.net

More Related Content

Similar to Refined API Docs - Tips & Techniques

"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad..."How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...Steven Herod
 
Become Your Own Business Analyst, Gather Requirements for Any Project
Become Your Own Business Analyst, Gather Requirements for Any ProjectBecome Your Own Business Analyst, Gather Requirements for Any Project
Become Your Own Business Analyst, Gather Requirements for Any ProjectCathy Dew
 
Designing the conversation: Don't forget your form fields
Designing the conversation: Don't forget your form fieldsDesigning the conversation: Don't forget your form fields
Designing the conversation: Don't forget your form fieldsSara Walsh
 
How 'Open' Changes Product Development
How 'Open' Changes Product DevelopmentHow 'Open' Changes Product Development
How 'Open' Changes Product DevelopmentPhase2
 
ThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docx
ThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docxThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docx
ThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docxchristalgrieg
 
NYFT Minimum Sellable Product
NYFT Minimum Sellable ProductNYFT Minimum Sellable Product
NYFT Minimum Sellable ProductKoombea
 
Communications Audit
Communications AuditCommunications Audit
Communications Auditguesta8fe5
 
Web copywriting workshop
Web copywriting workshopWeb copywriting workshop
Web copywriting workshopJennifer Morrow
 
Documented Essay Sample
Documented Essay SampleDocumented Essay Sample
Documented Essay SampleDenise Snow
 
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...Abdelhalim DADOUCHE
 
UT_Analytics_Meeting
UT_Analytics_MeetingUT_Analytics_Meeting
UT_Analytics_MeetingNate Valentin
 
Prototype & test (student to independent consultant)
Prototype & test (student to independent consultant)Prototype & test (student to independent consultant)
Prototype & test (student to independent consultant)RSB68
 
Email Marketing and Digital Copywriting
Email Marketing and Digital CopywritingEmail Marketing and Digital Copywriting
Email Marketing and Digital CopywritingSpotler
 
Content design for internal communicators
Content design for internal communicatorsContent design for internal communicators
Content design for internal communicatorsIntranet Now
 
UX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek Dinner
UX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek DinnerUX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek Dinner
UX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek DinnerKate Wilhelm
 
Be the Captain of Your Career
Be the Captain of Your Career Be the Captain of Your Career
Be the Captain of Your Career Jack Molisani
 
Technical Writing For Consultants
Technical Writing For ConsultantsTechnical Writing For Consultants
Technical Writing For Consultantsrlucera
 
ASIALYST Community Blog Innovation Training :: Day 1
ASIALYST Community Blog Innovation Training :: Day 1ASIALYST Community Blog Innovation Training :: Day 1
ASIALYST Community Blog Innovation Training :: Day 1Saylow Alrite
 

Similar to Refined API Docs - Tips & Techniques (20)

"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad..."How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
 
Become Your Own Business Analyst, Gather Requirements for Any Project
Become Your Own Business Analyst, Gather Requirements for Any ProjectBecome Your Own Business Analyst, Gather Requirements for Any Project
Become Your Own Business Analyst, Gather Requirements for Any Project
 
Designing the conversation: Don't forget your form fields
Designing the conversation: Don't forget your form fieldsDesigning the conversation: Don't forget your form fields
Designing the conversation: Don't forget your form fields
 
How 'Open' Changes Product Development
How 'Open' Changes Product DevelopmentHow 'Open' Changes Product Development
How 'Open' Changes Product Development
 
ThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docx
ThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docxThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docx
ThemeDigitalTechnologyinOurLivesResearchEssay2Gu.docx
 
NYFT Minimum Sellable Product
NYFT Minimum Sellable ProductNYFT Minimum Sellable Product
NYFT Minimum Sellable Product
 
Scailing CX Playbook - Chattermill
Scailing CX Playbook - ChattermillScailing CX Playbook - Chattermill
Scailing CX Playbook - Chattermill
 
Communications Audit
Communications AuditCommunications Audit
Communications Audit
 
Web copywriting workshop
Web copywriting workshopWeb copywriting workshop
Web copywriting workshop
 
Documented Essay Sample
Documented Essay SampleDocumented Essay Sample
Documented Essay Sample
 
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
 
UT_Analytics_Meeting
UT_Analytics_MeetingUT_Analytics_Meeting
UT_Analytics_Meeting
 
Prototype & test (student to independent consultant)
Prototype & test (student to independent consultant)Prototype & test (student to independent consultant)
Prototype & test (student to independent consultant)
 
1_Writing_no_Plagiarism_AI_Tools_04-10-23.pptx
1_Writing_no_Plagiarism_AI_Tools_04-10-23.pptx1_Writing_no_Plagiarism_AI_Tools_04-10-23.pptx
1_Writing_no_Plagiarism_AI_Tools_04-10-23.pptx
 
Email Marketing and Digital Copywriting
Email Marketing and Digital CopywritingEmail Marketing and Digital Copywriting
Email Marketing and Digital Copywriting
 
Content design for internal communicators
Content design for internal communicatorsContent design for internal communicators
Content design for internal communicators
 
UX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek Dinner
UX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek DinnerUX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek Dinner
UX Circuit Training - Delivered at Fluxible 2013 and the KW Girl Geek Dinner
 
Be the Captain of Your Career
Be the Captain of Your Career Be the Captain of Your Career
Be the Captain of Your Career
 
Technical Writing For Consultants
Technical Writing For ConsultantsTechnical Writing For Consultants
Technical Writing For Consultants
 
ASIALYST Community Blog Innovation Training :: Day 1
ASIALYST Community Blog Innovation Training :: Day 1ASIALYST Community Blog Innovation Training :: Day 1
ASIALYST Community Blog Innovation Training :: Day 1
 

Recently uploaded

WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2WSO2
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million PeopleWSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million PeopleWSO2
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfryanfarris8
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2
 
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 

Recently uploaded (20)

WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration Tooling
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million PeopleWSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in Uganda
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 

Refined API Docs - Tips & Techniques

  • 1. Tips and Techniques 2018-10-10 - Ted Spence - Director, AvaTax API
  • 2. • Learned programming in Microsoft Basic on a Commodore PET • BA Philosophy, Cal State Fullerton • Built Avalara’s sales tax return filing system • Started building AvaTax REST API in 2016
  • 3. Documentation is how we program people
  • 4. People aren’t machines We all skim the material Different learning styles
  • 5. To write good docs, everyone must care Let’s see how we can do it
  • 6. Write down everything you’re told Leave documentation for the next person who gets hired Wikis are a great way to get started
  • 7. Answer every support question with docs If you don’t have docs for that question, write! Great way to find topics for blog posts … okay, maybe write docs after you get the same question three times
  • 8. Your requirements are your docs If they’re too complex they help nobody This is why agile “Stories” are helpful
  • 9. It’s okay to just edit for someone else Link docs together (wikis are great) Give constructive feedback Did they forget to mention something? Can you rephrase it?
  • 10.
  • 11. Don’t remove something you saw twice People find docs in different ways
  • 12. Original copy for AvaTax “SalesOrder” objects: Sales Order, estimate or quote (default) This is a temporary document type and is not saved in tax history.
  • 13. Sales Order, estimate or quote (default) “Represents an estimate, or a sales order, or a quote.” Lead with the most common word! Use full sentences!
  • 14. Add purpose: “This document type is used before a sale has occurred to estimate the final amount of tax to be paid when the sale is completed.” Compare to Sales Invoice: “This document type is used to record a final transaction and calculate the final tax amount with all necessary information.”
  • 15. Keep track of what people get confused about “For a sales order, the `companyCode` of the transaction refers to the seller and the `customerVendorCode` refers to the buyer.”
  • 16.
  • 17. Use links to your advantage Remind people of good stuff Examples help a lot!
  • 18. “How should I use this?” I need to know why Is this right for me? Teach me best practices? You need a User Guide “I can’t remember …” I know kinda what I want Not sure about some detail Maybe need an example You need Reference Docs
  • 19. • Focus on facts • Bullet points • Methods and Models • Explanations of fields and parameters
  • 20. • Tell the story of how the APIs fit together • When do you use each one, and why • Link to reference rather than too much detail
  • 21. If you write good docs, you’ll feel like you’re repeating yourself It’s okay! Some customers struggle with the basics Others need details

Editor's Notes

  1. /// /// /// /// /// ///
  2. /// /// /// /// /// ///
  3. /// /// /// /// /// ///