The library uses an opaque data type to represent a tree structure made of strings, data blocks, arrays and dictionaries (key-value pair lists). This structure can be manipulated, written out to and read in from a file, and synchronized with the contents of a file. The purpose of PL is to closely mimick the behaviour of the property lists used in GNUstep/OPENSTEP (there formed with the NSString, NSData, NSArray and NSDictionary classes) and to be compatible with it. PL enables programs that use configuration or preference files to make these compatible with GNUstep/OPENSTEP's user defaults handling mechanism, without needing to use Objective-C or GNUstep/OPENSTEP themselves.