         }
     }
     
+    /**
+     Save output of current `UsbongNodeState`s to `Documents/Answers/{timeStamp}.csv`
+     
+     - parameters:
+       - generatorType: Type of an `UsbongAnswersGenerator`
+       - completion: Handler for when the writing completes, whether successful or not
+    */
     func saveOutputData<T: UsbongAnswersGenerator>(generatorType: T.Type, completion: ((success: Bool, filePath: String) -> Void)?) {
         let fileManager = NSFileManager.defaultManager()
         let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)


import Foundation

public protocol UsbongAnswersGenerator {
    associatedtype OutputType
    init(states: [UsbongNodeState])
    
    @warn_unused_result
    func generateOutput() -> OutputType
    
    @warn_unused_result
    func generateOutputData() -> NSData?
}

    }
}

/// Generate answers to default CSV format
public class UsbongAnswersGeneratorDefaultCSVString: UsbongAnswersGenerator {
    /// A collection of `UsbongNodeState`s that the output will be based upon
    public let states: [UsbongNodeState]
    
    /// Create an instance of `UsbongAnswersGeneratorDefaultCSVString`
    public required init(states: [UsbongNodeState]) {
        self.states = states
    }
    
    /// Generate an output of type `String`
    public func generateOutput() -> String {
        var finalString = ""
        
