Suggested Program Field Descriptions
Suggested Program Field Descriptions

Suggested PSD Field Descriptions v. 0.2
Request for Comments

 This document presents a structure to enable inter-operability around a baseline program-level PSD across the entire public radio enterprise.



Introduction and Assumptions

Understanding the Structure
Element Overview
Tags Index
Sample XML


Introduction and Assumptions
Welcome to version 0.2 of the suggested PSD field descriptions. This document is the result of input from partners and interested third parties, and contains a number of changes and additions to the original suggested PSD field descriptions.

The following discussion deals only with PSD that is specific to a particular program, on a series, episode, and segment level. These fields defined are for text display only and contain only the minimal additional information necessary to reconcile them with a given piece of audio. These fields are a subset of data generally released by producers and distributors for use in asset management systems.   

Additional PSD functionality, including pledge, underwriting and other station-specific messages, is discussed in the companion document  Station Services Implementation .

back to top


 Understanding the Structure
There are three levels of text data: "Series," "Program," and "Segment/Song." 

  • "Series" elements are text elements pertaining to all episodes of an ongoing show.
  • "Program" elements pertain to a single episode of a Series.
  • "Segment" and "Song" elements pertain to a particular part or segment of a Program (episode).

 A fourth level that would define "Pieces" within a segment (and incorporate timing data) is currently under discussion.

 This field structure is designed to support phased deployment of PSD services, beginning with immediate deployment of Series-level information, then moving on to Program- and Segment-level implementation as station infrastructures, producer implementation, and technological development permits.

back to top

Element Overview
A valid PSD document can be created just using three Series fields:  "SeriesTitle," "SeriesDescription," and "SeriesGenre," as defined in Baseline PSD Specification 0.2.  These fields can be reused for multiple programs within a series.  Alternatively, Series-level information, which can be obtained from a variety of external sources, can be entered directly in proper format on a station's Text Scheduling Unit (TSU) without utilizing an external PSD document.

The next level of implementation utilizes Program fields, which contain information relevant to a specific episode. Over a series of programs, the Series fields would remain consistent, while the Program fields would be changed program-to-program.

The final level of PSD implementation utilizes Segments, which are individual components of a program.  Because of the differing needs of talk and music formats, we have also included Song tags that behave in the same manner as Segment tags.

When utilizing Segments, a PSD record can be either a single record, with a one-to-one relationship to a single Segment, or can contain information about every Segment in a given Program. The utility of these two schemes is currently being evaluated. In either case, a given record will contain information not only about the Segment to which it is attached, but also the Program and Series of which it is a part.

back to top


Transports
It is expected that this data will be available via a variety of transports:

  • Encoded in the file
  • At a known location on the producer's/distributor's server via HTTP (web site), FTP or RSS.
  • At a known location on the station's local area network (in the case of locally produced programming or files downloaded from the producer's/distributor's website)

Assumptions

  • Text insertion will be handled by an automated text scheduler (which we refer to as a Text Scheduling Unit, or TSU) which may be a stand-alone unit or part of an automation or traffic system
  • Producers will decide how much PSD they wish to include with their shows and will adopt a standardized set of fields that they will consistently populate for each episode within the series.  This information will be furnished to stations that air the series.
  • Stations will select Series-level, Program-level, and Segment-level data, as well as additional station information, for full control of their PSD output according to their wants, needs, and technical infrastructure
  • Producers will have some recommendations on what stations should or can included along with their programs
  • All fields are a maximum of 64 characters in length to ensure compatibility with the installed base of receivers
  • A maximum of two fields will display on a given receiver at any time
  • There will eventually be a standardized method for Program- or Segment-level text to be sent to these devices
  • As the installed base of HD Radios increases and iBiquity's standards become more fully implemented, we expect that many of these fields will directly map to them.

This release is currently v0.2 beta and is intended to test the utility of the proposed structure. Once it is determined how the public radio community uses these fields in actual practice, we expect that the utility of some fields may be found to be minimal; they may be removed from future releases. It is also expected that additional needs will be identified, requiring additional fields. In the meantime, we welcome your comments, questions, and concerns.  Contact us here.  We look forward to hearing from you.

A rough and unpopulated XML sample and DACS reports for This American Life and PRI's The World, mapped into the proposed structure, can be found at the end of this document.

back to top
back to main Cookbook menu


PSD Field Description v0.2

For clarity, we have organized the various tags into two categories: "Show Info" and "Housekeeping."  "Show Info" tags are text descriptions of the Series, Program or Segment that are meant for display. "Housekeeping" tags are to enable automation systems to ingest, reconcile, or otherwise manage the text content.  It should be noted that these are purely our own organizational conventions to help the reader.

"Obligation" describes the obligation (or not) to provide the tags, as opposed to the obligation for stations to use them.

"Available for display" refers to fields which can be displayed on the listener's receiver, as opposed to those that are devoted to internal housekeeping.

Tags Index
Series Elements Tags
Program Elements Tags
Segment and Song Elements Tags
Segment/Song Housekeeping Tags



 Series Elements
Generally, these are elements that apply globally to a series of programs. It is assumed that they will remain static, except for occasional changes of underwriters or hosts.

 ß----------Show Info---------------à 

                       <SeriesTitle>

                       <SeriesDescription>

                       <SeriesHost>

                       <SeriesGenre>

                       <SeriesComment1>

                       <SeriesComment2>

                       <SeriesUnderwriterName1>

                       <SeriesUnderwriterTag1>

                       <SeriesUnderwriterName2>

                       <SeriesUnderwriterTag2>

                       <SeriesUnderwriterName3>

                       <SeriesUnderwriterTag3>

 

ß----------Housekeeping tags---------à

                       <SeriesID>

                         <SeriesHasPgmInfo>

                       <SeriesIsSeries>

 

ß----------Show Info---------------à 

Element name:  SeriesTitle
Available for display (Y/N)?  Y
Element description:  The name of the Series (e.g., Car Talk or Fresh Air)
Encoding:  ASCII text, 64 characters max
Obligation:  Mandatory
Discussion: This is the first field of default text that is displayed in absence of program- or segment-level text.

Element name: SeriesDescription
Available for display (Y/N)? Y
Element description: General description of the program's content
Encoding: ASCII text, 64 Characters
Obligation: Mandatory
Discussion: This is the second field of default text that is displayed in absence of program- or segment-level text.  It is a general description of the program's content (e.g.,  "News and opinion from National Public Radio")

Element name: SeriesHost
Available for display (Y/N)? Y
Element description: The name of the host of the series
Encoding: ASCII text, 64 Characters
Obligation: Optional
Discussion:  Deployment of this field will depend largely on whether producers find it to be relevant, and whether the program name or description already incorporates the host's name (e.g.,  Fresh Air with Terry Gross).

Element name: SeriesGenre
Available for display (Y/N)? N
Element description: As per ID3 genre categories
Encoding: Three-digit number
Obligation: Mandatory
Discussion: Implementation of iBiquity's "genre" tag for projected advanced functionality. We assume that all programs in a series will be of the same genre. In the case that they are not, there is a corresponding "ProgramGenre" tag. Note:  there are significant issues with the ID3 genre format that will need to be addressed for implementation of this tag to be of real use.

Element name: SeriesComment1
Available for display (Y/N)? Y
Element description:   Miscellaneous program information
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  A place for inserting other text that does not warrant its own field, such as call-in numbers, miscellaneous facts, etc.. Two fields are provided in case a long message is needed.

Element name: SeriesComment2
Available for display (Y/N)? Y
Element description: The second half of SeriesComment1, above
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  See above

Element name: SeriesUnderwriterName (1-3)
Available for display (Y/N)? Y
Element description: Name of Series underwriter
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: This space is provided for underwriters of an entire series. We have also provided slots for both program- and segment-level sponsorship. We have provided space for three sponsors; if necessary we will provide more.

Element name: SeriesUnderwriterTag (1-3)
Available for display (Y/N)? Y
Element description:   Underwriter tagline (e.g., "Archer Daniels Midland, supermarket to the world")  
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:   Also for spill-over from SeriesUnderwriterName (above)

 ß----------Housekeeping tags---------à

Element name: SeriesID
Available for display (Y/N)? N
Element description: The distributor's unique ID information for a given Series (usually a number or text string)
Encoding: ASCII text, length TBD
Obligation: Mandatory
Discussion: In situations where audio and text content are transmitted or received separately, and only Series information is being utilized, this field would allow an automation system to join them. However, because Series info could be simply hand-entered on a TSU, furthur testing will be required to determine if this field has real utility.

Element name: SeriesIsSeries
Available for display (Y/N)? N
Element description:  Differentiates between a Program that is part of a Series (Y) and one that is not (N).
Encoding: ASCII text, 1 character (Y or N)
Obligation: Optional
Discussion:  If a Program is not part of a Series, Program fields are populated instead of Series fields, and the automation system is referred to them. The <SeriesHasPgmInfo> tag below should be set to Yes (Y) in this case.

Element name: SeriesHasPgmInfo
Available for display (Y/N)? N
Element description: Tells automation system whether there is program-level information
Encoding: ASCII text, 1 character (Y or N)
Obligation: Mandatory, if Program level info is used
Discussion:  See SeriesIsSeries discussion, above.

back to top
back to Tags Index
back to main Cookbook menu

 Program Elements
Program elements are "children" of series elements. Generally, these are elements that apply to a single episode (Program) within a series. If these fields are populated, it is assumed that they will change on a Program-to-Program basis. As currently configured, there can be one and only one Program per Series in a given PSD document.  (It is conceivable that there could be more than one, but this would be of somewhat dubious utility in the context of PSD.)

ß----------Show Info---------------à 

            <PgmTitle>

                       <PgmDescription>

                       <PgmHost>

                         <PgmGenre>

                       <PgmComment1>

                       <PgmComment2>

                       <PgmUnderwriterName1>

                       <PgmUnderwriterTag1>

                       <PgmUnderwriterName2>

                       <PgmUnderwriterTag2>

                       <PgmUnderwriterName3>

                       <PgmUnderwriterTag3>

ß----------Housekeeping tags---------à

                         <PgmID>

                       <PgmNumber>

                       <PgmHasSegInfo>

                         <PgmAudioFile>

                       <PgmAudioFileLocation>


ß
----------Show Info---------------à 

Element name: PgmTitle
Available for display ? Yes
Element description: Name of an episode in an ongoing series
Encoding: ASCII text, 64 characters
Obligation: Optional (Mandatory if SeriesIsSeries is set to "N")
Discussion: Many public radio shows have episode names associated with them, e.g., This American Life "Holiday Spectacular" or "David and Goliath," or Fresh Air "Recalling the Iranian Hostage Crisis."

Element name: PgmDescription
Available for display (Y/N)? Y
Element description: description of the theme of or an episode in ongoing series
Encoding: ASCII text 64 Characters
Obligation: Optional, Mandatory if "SeriesIsSeries" is set to "N"
Discussion: A brief description of the content of a particular program

Element name: PgmHost
Available for display (Y/N)? Y
Element description: The name of the host of the show
Encoding: ASCII text, 64 Characters
Obligation: Optional
Discussion:  Deployment of this field will depend largely on whether producers find it to be relevant, whether hosts change Program-to-Program, and whether the Series or Program name or description already incorporates the host's name (e.g.,  Fresh Air with Terry Gross).

Element name: PgmGenre
Available for display (Y/N)? N
Element description: As per ID3 genre categories
Encoding: Three-digit number
Obligation: Optional (Mandatory if SeriesIsSeries is set to "N")
Discussion: Implementation of iBiquity's "genre" tag for projected advanced functionality. This tag is provided for Series which may have different genres from Program to Program. It should be noted that there are significant issues with the ID3 genre format which will need to be addressed for implementation of this tag to be of real utility.

Element name: PgmComment1
Available for display (Y/N)? Y
Element description:   Miscellaneous program information
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  A place for inserting other text that does not warrant its own field, such as call-in numbers, miscellaneous facts, etc.. Two fields are provided in case a long message is needed.

Element name: PgmComment2
Available for display (Y/N)? Y
Element description: The second half of PgmComment1.
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  See above

Element name: PGMUnderwriterName (1-3)
Available for display (Y/N)? Y
Element description: Name of an underwriter
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: While somewhat controversial, space is needed for underwriter names. We have provided space for three fields; if necessary we will provide more.

Element name: PgmUnderwriterTag (1-3)
Available for display (Y/N)? Y
Element description:   Underwriter tagline (e.g., "Archer Daniels Midland, supermarket to the world")  
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  Also for spill-over from PgmUnderwriterName

ß----------Housekeeping tags---------à

Element name: PgmID
Available for display (Y/N)? N
Element description: Contains the distributor's unique ID information, as a number or text string.
Encoding: ASCII text, length TBD
Obligation: Optional (Mandatory if providing Program-level text, and Mandatory if SeriesIsSeries is set to "N")
Discussion: This is the ID of an individual Program in a Series, as assigned by the producer or distributor. For example, the East Coast feed of All Things Considered for July 7, 2006, could be  ATCE_2006_07_07. In situations where audio and text content are transmitted or received separately, this field would allow an automation system to associate them.

Element name: PgmNumber
Available for display (Y/N)? N
Element description: Number of an episode (e.g., Car Talk # "335")
Encoding: ASCII text, length TBD
Obligation: Optional
Discussion: This number defines the order in which the episode was produced, as assigned by the producer. Used in conjunction with SeriesTitle, this will yield a secondary method of identifying a particular Program. This will allow creation of identifiable PSD documents by producers prior to assignment of a PgmID by a distributor.

Element name: PgmHasSegInfo
Available for display (Y/N)? N
Element description:  Tells automation system whether there is segment level information
Encoding: ASCII text,1 character (Y or N)
Obligation: Mandatory if using Segments
Discussion:   

Element name:  PgmAudioFile
Available for display (Y/N)? N
Element description: Name of audio file associated with the Program
Encoding: ASCII text, length TBD
Obligation: Optional
Discussion:   If PgmHasSegInfo is Yes, then SegAudioFile is used

Element name:  PgmAudioFileLocation
Available for display (Y/N)? N
Element description: If the program audio file is at an external location, this is the URL where it is located
Encoding: ASCII text, length TBD
Obligation: Optional
Discussion:

back to top
back to Tags Index
back to main Cookbook menu
 

Segment and Song Elements
Song and Segment elements are elements that apply to a particular piece of a single program. Song and Segment fields are therefore children of the Program element. Song and Segment elements are both contained within a given Segment.  The "SegType" tag is used to tell the automation system which to use.

The level of granularity in a given program (song, segment, etc.) will depend on factors outside our control, so we have tried to account for a wide range of possibilities. Depending on the requirements of particular systems, and how these recommendations are implemented, an XML document describing a Program can contain either a single or multiple segments.

When utilizing Song elements for Segment tags, "SegNumber," "SegType," "SegAudioFile," and "SegAudioFileLocation" at the bottom are used for housekeeping.

ß----------Show Info---------------à 

                       <SegTitle>

                       <SegDescription>

                       <SegHost>

                       <SegGuest>

                       <SegComment1>

                       <SegComment2>

                       <SegUnderwriterName>

                       <SegUnderwriterTag>

 

                       <SongTitle>

                       <SongTitleLong1>

                       <SongTitleLong2>

                       <SongArtist>

                       <SongAlbum>

                       <SongConductor>

                       <SongComposer>

                       <SongSoloist>

ß----------Housekeeping tags---------à

                       <SegID>

                       <SegNumber>

                       <SegType>

                       <SegAudioFile>

                       <SegAudioFileLocation>

 

Element name: SegTitle
Available for display (Y/N)? Y
Element description: The topic or title of that segment
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: Many programs have discrete chapters or acts (such as This American Life and Fresh Air)

Element name: SegDescription
Available for display (Y/N)? Y
Element description: Description of the content of the particular segment
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:

Element name: SegGuest
Available for display (Y/N)? Y
Element description: The name of the guest or featured performer in that Segment
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: Could possibly be rolled into SegTitle or SegDescription (e.g., "Talking Blues with Eric Clapton").

Element name: SegHost
Available for display (Y/N)? Y
Element description: The name of the host or reporter for a particular segment
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: Could possibly be rolled into SegTitle or SegDescription (e.g., "Terry Gross talks blues with Eric Clapton").

Element name: SegComment1
Available for display (Y/N)? Y
Element description: Miscellaneous segment-related text that does not warrant its own field.
Encoding: ASCII text, 64 characters                
Obligation: Optional
Discussion: Two fields are provided in case a long message is needed.  It is our hope that a whiz-kid producer will have a really good idea what to do with this field and will revolutionize radio!

Element name: SegComment2
Available for display (Y/N)? Y
Element description:  The second half of SegComment1
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: See above

Element name: SegUnderwriterName
Available for display (Y/N)? Y
Element description: Name of an underwriter (e.g., "This portion of Marketplace brought to you by Archer Daniels Midland Corporation")
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  It is unclear how many Series will wish to have underwriting of individual Segments, so we have only provided a single field. Additional fields will be added if needed.

Element name: SegUnderwriterTag
Available for display (Y/N)?
Element description:  Underwriter's tagline (e.g., "Archer Daniels Midland, supermarket to the world")
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  Also for spill-over from SegUnderwriterName

Song Elements

Element name: SongTitle
Available for display (Y/N)? Y
Element description: The name of a song or piece of music
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: Due to the length of titles, use of this field for classical music may be problematic; see SongTitleLong below

Element name: SongTitleLong1
Available for display (Y/N)?Y
Element description: Half of a two-field space for title of a piece of music that includes the elements SongTitle, SongArtist, SongComposer, SongConductor and  SongSoloist
Encoding: ASCII text 64 characters
Obligation: Optional
Discussion: In some cases, particularly in classical music, titles may appear in a long form that would require staff time to organize across the fields below. In these cases, a simple script could be written that breaks the line at the first blank space previous to the 64th character and puts the remaining text in the second field.  Two fields are provided for this functionality.

Element name: SongTitleLong2
Available for display (Y/N)?Y
Element description: The second half of SongTitleLong1
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion: See above

Element name: SongArtist
Available for display (Y/N)? Y
Element description: Name of performer (e.g., the Beatles, the London Symphony Orchestra)
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:

Element name: SongAlbum
Available for display (Y/N)? Y
Element description: The album or source of the recording
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:

Element name: SongConductor
Available for display (Y/N)? Y
Element description: In the case of orchestral works, the name of the conductor; otherwise not used
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:

Element name: SongComposer
Available for display (Y/N)? Y
Element description: The music composer or songwriter
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:  

Element name: SongSoloist
Available for display (Y/N)? Y
Element description: The name of the musical soloist or featured performer
Encoding: ASCII text, 64 characters
Obligation: Optional
Discussion:

back to top
back to Tags Index
back to main Cookbook menu


Segment/Song Housekeeping tags

Element name: SegID
Available for display (Y/N)? N
Element description: Segment ID (e.g., ATCE_2006_07_07_0206, which might indicate the second of six segments of the July 7th edition of the East Coast feed of All Things Considered)
Encoding: ASCII text, 64 characters
Obligation: Mandatory if you are providing Segment-level data
Discussion: We assume that this information will be readily available for a given Program.  In the absence of this information, a different method will need to be developed.

Element name: SegNumber
Available for display (Y/N)? N
Element description: The number of the Segment (e.g., 10:12 would indicate that the segment is the 10th of 12 Segments in the Program)
Encoding: Text in the format x:y, where x is the number of the Segment and y is the total number of Segments in the Program
Obligation: Mandatory if you are providing Segment-level data.
Discussion: In situations where audio and text content are transmitted or received separately, this field would allow an automation system to join them.

Element name: SegType
Available for display (Y/N)? N
Element description: Identification of  Song vs Seg elements
Encoding:  Text:  Music or Talk
Obligation: Mandatory if using Segment-level descriptions.
Discussion: Allows automation systems to differentiate between fields intended to describe musical (Song) and non-musical (Segment) selections.

Element name:  SegAudioFile
Available for display (Y/N)? N
Element description: Name of audio file associated with the Segment.
Encoding: Valid file name
Obligation: Optional
Discussion:   

Element name:  SegAudioFileLocation
Available for display (Y/N)? N
Element description: If the Segment's audio file is at an external location, this is the URL where it is located
Encoding: Valid path name to a remote server
Obligation: Optional
Discussion:

back to top
back to main Cookbook menu


Sample XML

 

<Series>

ß----------Show Info---------------à 

<SeriesTitle>  </SeriesTitle>

<SeriesDescription> </SeriesDescription>

<SeriesHost> </SeriesHost>

<SeriesGenre> </SeriesGenre>

<SeriesComment1> </SeriesComment1>

<SeriesComment2> </SeriesComment2>

<SeriesUnderwriterName1> </SeriesUnderwriterName1>

 <SeriesUnderwriterTag1> </SeriesUnderwriterTag1>

<SeriesUnderwriterName2> </SeriesUnderwriterName2>

<SeriesUnderwriterTag2> </SeriesUnderwriterTag2>

<SeriesUnderwriterName3> </SeriesUnderwriterName3>

<SeriesUnderwriterTag3> </SeriesUnderwriterTag3>

 

ß----------Housekeeping tags---------à

<SeriesID> </SeriesID>

<SeriesHasPgmInfo> </SeriesHasPgmInfo

<SeriesIsSeries> <SeriesIsSeries>

 

<Program> 

 

ß----------Show Info---------------à 

 <PgmTitle> <PgmTitle>

 <PgmDescription> <PgmDescription>

 <PgmHost> </PgmHost>

 <PgmGenre> </PgmGenre>

 <PgmComment1> </PgmComment1>

 <PgmComment2> </PgmComment2> 

 <PgmUnderwriterName1></PgmUnderwriterName1>

 <PgmUnderwriterTag1> </PgmUnderwriterTag1> 

 <PgmUnderwriterName2> </PgmUnderwriterName2> 

 <PgmUnderwriterTag2> </PgmUnderwriterTag2>

 <PgmUnderwriterName3> </PgmUnderwriterName3>

 <PgmUnderwriterTag3> </PgmUnderwriterTag3>

 

ß----------Housekeeping tags---------à

<PgmID> </PgmID>

<PgmNumber> </PgmNumber>

 <PgmHasSegInfo> </PgmHasSegInfo>

 <PgmAudioFile> </PgmAudioFile>

<PgmAudioFileLocation> <PgmAudioFileLocation>

 

<Segment> 

ß----------Show Info---------------à 

<SegTitle> </SegTitle>

<SegDescription> </SegDescription>

<SegHost> </SegHost>

<SegGuest> Chicago Reader film critic Jonathan Rosenbaum </SegGuest>

<SegComment1> </SegComment1>

<SegComment2> </SegComment2>

<SegUnderwriterName> </SegUnderwriterName>

<SegUnderwriterTag> </SegUnderwriterTag>

 

<SongTitle> </SongTitle>

<SongTitleLong1> </SongTitleLong1>

<SongTitleLong2> </SongTitleLong2>

<SongArtist> </SongArtist>

<SongAlbum> </SongAlbum>

<SongConductor> </SongConductor>

<SongComposer> </SongComposer>

<SongSoloist> </SongSoloist>

 

ß----------Housekeeping tags---------à

<SegID> </SegID>

<SegNumber> </SegNumber>

<SegType> </SegType>

<SegAudioFile> </SegAudioFile>

<SegAudioFileLocation> </SegAudioFileLocation>

  

</Segment> 

</Program> 

</Series> 


Go to Sample Program Rundown for This American Life
Go to Sample Program Rundown for PRI's The World 

back to top
back to main Cookbook menu