 }
 
 extension ArrayIndexLens {
-    init(at idx: Int) {
+    public init(at idx: Int) {
         get = { array in
             guard 0..<array.count ~= idx else {
                 return .Error(LensErrorType.ArrayIndexOutOfBounds)

        )
    }

    func modify(object: Whole, @noescape _ closure: Part -> Part) -> LensResult<Whole> {
        return get(object)
            .then { self.set(object, closure($0)) }
    }

    func tryGet(object: Whole) throws -> Part {
        switch get(object) {
        case .OK(let v):
            return v


// MARK: - Error

public enum LensErrorType: ErrorType {
    case OptionalNone
    case ArrayIndexOutOfBounds
}
