diff --git a/goyaml.go b/goyaml.go
index 9835f07..59357cc 100644
--- a/goyaml.go
+++ b/goyaml.go
@@ -31,14 +31,54 @@
     }
 }
 
+// Objects implementing the goyaml.Setter interface will receive the YAML
+// tag and value via the SetYAML method during unmarshaling, rather than
+// being implicitly assigned by the gobson machinery.  If setting the value
+// works, the method should return true.  If it returns false, the given
+// value will be omitted from maps and slices.
 type Setter interface {
     SetYAML(tag string, value interface{}) bool
 }
 
+// Objects implementing the goyaml.Getter interface will get the GetYAML()
+// method called when gobson is requested to marshal the given value, and
+// the result of this method will be marshaled in place of the actual object.
 type Getter interface {
     GetYAML() (tag string, value interface{})
 }
 
+// Unmarshal decodes the first document found within the in byte slice
+// and assigns decoded values into the object pointed by out.
+//
+// Maps, pointers to structs and ints, etc, may all be used as out values.
+// If an internal pointer within a struct is not initialized, goyaml
+// will initialize it if necessary for unmarshalling the provided data,
+// but the struct provided as out must not be a nil pointer.
+// 
+// The type of the decoded values and the type of out will be considered,
+// and Unmarshal() will do the best possible job to unmarshal values
+// appropriately.  It is NOT considered an error, though, to skip values
+// because they are not available in the decoded YAML, or if they are not
+// compatible with the out value. To ensure something was properly
+// unmarshaled use a map or compare against the previous value for the
+// field (usually the zero value).
+//
+// Struct fields are only unmarshalled if they are exported (have an
+// upper case first letter), and will be unmarshalled using the field
+// name lowercased by default. When custom field names are desired, the
+// tag value may be used to tweak the name. Everything before the last
+// slash in the field tag will be used as the name. The value following
+// the slash is used to tweak the marshalling process (see Marshal).
+//
+// For example:
+//
+//     type T struct {
+//         F int "a/c"
+//         B int
+//     }
+//     var T t
+//     goyaml.Unmarshal([]byte("a: 1\nb: 2"), &t)
+// 
 func Unmarshal(in []byte, out interface{}) (err os.Error) {
     defer handleErr(&err)
     d := newDecoder()
@@ -51,6 +91,28 @@
     return nil
 }
 
+// Marshal writes the object provided into a YAML document. The structure
+// of the generated document will reflect the structure of the value itself.
+// Maps, pointers to structs and ints, etc, may all be used as the in value.
+//
+// Struct fields are only marshalled if they are exported (have an
+// upper case first letter), and will be marshalled using the field
+// name lowercased by default. When custom field names are desired, the
+// tag value may be used to tweak the name. Everything before the last
+// slash in the field tag will be used as the name. The characters
+// following the slash are used as flags for the marshalling process,
+// with 'c' meaning conditional (only marshal if non-zero), and 'f'
+// meaning use flow style (useful for structs, sequences and maps).
+//
+// For example:
+//
+//     type T struct {
+//         F int "a/c"
+//         B int
+//     }
+//     goyaml.Marshal(&T{B: 2}) // Returns "b: 2\n"
+//     goyaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n"
+//
 func Marshal(in interface{}) (out []byte, err os.Error) {
     defer handleErr(&err)
     e := newEncoder()
