             completed(300)]
 		
 		// provide simple predicate that always return false (so, sequence will not repeated)
-		let res = scheduler.start(0, subscribed: 0, disposed: 1000) {
-			self.sampleValues.asObservable().repeatWithBehavior(.immediate(maxCount: 3), scheduler: self.scheduler) { _ in
-				false
-			}
+		let res = scheduler.start(created: 0, subscribed: 0, disposed: 1000) {
+			self.sampleValues
+                .asObservable()
+                .repeatWithBehavior(.immediate(maxCount: 3), scheduler: self.scheduler, shouldRepeat: self.predicateFalse)
 		}
 		
 		XCTAssertEqual(res.events, correctValues)
 	}
 
     func testImmediateNotRepeatWithPredicateWithError() {
-		let res = scheduler.start(0, subscribed: 0, disposed: 1000) {
-            self.sampleValuesWithError.asObservable().repeatWithBehavior(.immediate(maxCount: 3), scheduler: self.scheduler) { _ in
-                false
-            }
+		let res = scheduler.start(created: 0, subscribed: 0, disposed: 1000) {
+            self.sampleValuesWithError
+                .asObservable()
+                .repeatWithBehavior(.immediate(maxCount: 3), scheduler: self.scheduler, shouldRepeat: self.predicateFalse)
         }
         XCTAssertEqual(res.events, erroredCorrectValues)
     }

			next(210, 1),
			next(220, 2),
			completed(300)]
		
		let res = scheduler.start(0, subscribed: 0, disposed: 1000) {
			self.sampleValues.asObservable().repeatWithBehavior(.delayed(maxCount: 3, time: 5.0), scheduler: self.scheduler) { _ in
				false
			}
		}
		
		XCTAssertEqual(res.events, correctValues)
	}

    func testDelayedNotRepeatWithPredicateWithError() {
		let res = scheduler.start(0, subscribed: 0, disposed: 1000) {
            self.sampleValuesWithError.asObservable().repeatWithBehavior(.delayed(maxCount: 3, time: 5.0), scheduler: self.scheduler) { _ in
                false
            }
        }
        XCTAssertEqual(res.events, erroredCorrectValues)
    }

    //MARK: immediate repeats

	func testImmediateRepeatWithoutPredicate() {
		let res = scheduler.start(created: 0, subscribed: 0, disposed: 1000) {
			self.sampleValues.asObservable().repeatWithBehavior(.immediate(maxCount: 2), scheduler: self.scheduler)
		}
		XCTAssertEqual(res.events, immediateCorrectValues)
	}
	
    func testImmediateRepeatWithError() {
		let res = scheduler.start(created: 0, subscribed: 0, disposed: 1000) {
            self.sampleValuesWithError.asObservable().repeatWithBehavior(.immediate(maxCount: 3), scheduler: self.scheduler)
        }

