 //
 
 public struct Diff<T> {
-    let results: [DiffStep<T>]
-    var insertions: [DiffStep<T>] {
+    public let results: [DiffStep<T>]
+    public var insertions: [DiffStep<T>] {
         return results.filter({ $0.isInsertion }).sort { $0.idx < $1.idx }
     }
-    var deletions: [DiffStep<T>] {
+    public var deletions: [DiffStep<T>] {
         return results.filter({ !$0.isInsertion }).sort { $0.idx > $1.idx }
     }
-    func reversed() -> Diff<T> {
+    public func reversed() -> Diff<T> {
         let reversedResults = self.results.reverse().map { (result: DiffStep<T>) -> DiffStep<T> in
             switch result {
             case .Insert(let i, let j):

public enum DiffStep<T> : CustomDebugStringConvertible {
    case Insert(Int, T)
    case Delete(Int, T)
    var isInsertion: Bool {
        switch(self) {
        case .Insert:
            return true

            return i
        }
    }
    public var value: T {
        switch(self) {
        case .Insert(let j):
            return j.1
