         }
     }
     
+    /**
+     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)

    }
}

public class UsbongAnswersGeneratorDefaultCSVString: UsbongAnswersGenerator {
    let states: [UsbongNodeState]
    
    public required init(states: [UsbongNodeState]) {
        self.states = states
    }
    
    public func generateOutput() -> String {
        var finalString = ""
        


import Foundation

/// Generate answers based on `UsbongNodeState`s
public protocol UsbongAnswersGenerator {
    associatedtype OutputType
    
    var states: [UsbongNodeState] { get }
    
    /// Create an instance of `UsbongAnswersGenerator` type
    init(states: [UsbongNodeState])
    
    /// Generate output of type `OutputType`
    @warn_unused_result
    func generateOutput() -> OutputType
    
    /// Generate output of type `NSData`
    @warn_unused_result
    func generateOutputData() -> NSData?
}
