 import AVFoundation
 import ObjectMapper
 
-//TODO: doc
+/**
+ *  Protocol defining the Watson Text to Speech service.
+ */
 public protocol TextToSpeechService
 {
-    //TODO: doc
-    func synthesize ( theText:String, voice: String, oncompletion: (data: NSData?, error:NSError?) -> Void )
-    
-    //TODO: doc
+    /**
+     This function invokes a call to synthesize text and decompress the audio to
+     produce a WAVE formatted NSData.
+     
+     - parameter theText:           String that will be synthesized
+     - parameter voice:             String specifying the voice name
+     - parameter oncompletion:      Callback function that will present the WAVE data
+     */
+    func synthesize ( theText:String, voice: String,
+        oncompletion: (data: NSData?, error:NSError?) -> Void )
+    
+    /**
+     This function returns a list of voices (gender, language, dialect) supported.
+     
+     - parameter oncompletion:      Callback function that presents an array of Voices
+     */
     func listVoices ( oncompletion: (voices: [Voice], error:NSError?) -> Void )
     
 }
 
-//TODO: doc
+
+/**
+ * Implementation for the Watson Text To Speech protocol.
+ */
 public class TextToSpeech : Service, TextToSpeechService
 {
     // Provides the Opus/Ogg decompression

            // Opus codec is the default, so the accept type is optional
            // params.updateValue("audio/ogg; codecs=opus", forKey: "accept")
            
            //REVIEW: isEmpty
            if (!voice.isEmpty)
            {
                params.updateValue(voice, forKey: "voice")

            
            let endpoint = getEndpoint("/v1/synthesize")
            
            if (theText.isEmpty)
            {
                let error = NSError.createWatsonError(404,
