     case completed
 }
 
-public extension PrimitiveSequenceType where ProofType == CompleteableProof, ElementType == Swift.Never {
+public extension PrimitiveSequenceType where TraitType == CompleteableTrait, ElementType == Swift.Never {
     public typealias CompleteableObserver = (CompleteableEvent) -> ()
 
-    public static func create(subscribe: @escaping (@escaping CompleteableObserver) -> Disposable) -> PrimitiveSequence<ProofType, ElementType> {
+    public static func create(subscribe: @escaping (@escaping CompleteableObserver) -> Disposable) -> PrimitiveSequence<TraitType, ElementType> {
         let source = Observable<ElementType>.create { observer in
             return subscribe { event in
                 switch event {

     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully.
     */
    public func retry(_ maxAttemptCount: Int)
        -> PrimitiveSequence<Proof, Element> {
        return PrimitiveSequence(raw: source.retry(maxAttemptCount))
    }


     - parameter selector: A transform function to apply to each element.
     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.
     */
    public func flatMap<R>(_ selector: @escaping (ElementType) throws -> PrimitiveSequence<Trait, R>)
        -> PrimitiveSequence<Trait, R> {
        return PrimitiveSequence<Trait, R>(raw: source.flatMap(selector))
    }

    /**
