         let object = UIButton()
 
         testEventsDestination(object.rp.title(for: state),
-                       object: object,
-                       keyPathOrGet: .right({ $0.title(for: state) }),
-                       values: iOSTests.stringsAndNilsFixture)
+                              object: object,
+                              keyPathOrGet: .right({ $0.title(for: state) }),
+                              values: iOSTests.stringsAndNilsFixture)
         testEventsDestination(object.rp.image(for: state),
-                       object: object,
-                       keyPathOrGet: .right({ $0.image(for: state) }),
-                       values: iOSTests.imagesAndNilsFixture)
+                              object: object,
+                              keyPathOrGet: .right({ $0.image(for: state) }),
+                              values: iOSTests.imagesAndNilsFixture)
         testEventsDestination(object.rp.backgroundImage(for: state),
-                       object: object,
-                       keyPathOrGet: .right({ $0.backgroundImage(for: state) }),
-                       values: iOSTests.imagesAndNilsFixture)
+                              object: object,
+                              keyPathOrGet: .right({ $0.backgroundImage(for: state) }),
+                              values: iOSTests.imagesAndNilsFixture)
         testEventsDestination(object.rp.attributedTitle(for: state),
-                       object: object,
-                       keyPathOrGet: .right({ $0.attributedTitle(for: state) }),
-                       values: iOSTests.attributedStringsFixture)
-      }
-    }
-    
+                              object: object,
+                              keyPathOrGet: .right({ $0.attributedTitle(for: state) }),
+                              values: iOSTests.attributedStringsFixture)
+      }
+    }
+
     func testUIBarItem() {
       let object = UIBarButtonItem()
-      testBoth(object.rp.isEnabled,
-               object: object,
-               keyPathOrGetSet: .left("enabled"),
-               values: iOSTests.boolFixture)
-      testBoth(object.rp.title,
-               object: object,
-               keyPathOrGetSet: .left("title"),
-               values: iOSTests.stringsAndNilsFixture)
-      testBoth(object.rp.image,
-               object: object,
-               keyPathOrGetSet: .left("image"),
-               values: iOSTests.imagesAndNilsFixture)
+      testEventsStream(object.rp.isEnabled,
+                       object: object,
+                       keyPathOrGetSet: .left("enabled"),
+                       values: iOSTests.boolFixture)
+      testEventsStream(object.rp.title,
+                       object: object,
+                       keyPathOrGetSet: .left("title"),
+                       values: iOSTests.stringsAndNilsFixture)
+      testEventsStream(object.rp.image,
+                       object: object,
+                       keyPathOrGetSet: .left("image"),
+                       values: iOSTests.imagesAndNilsFixture)
       if #available(iOS 8.0, *) {
-        testBoth(object.rp.landscapeImagePhone,
-                 object: object,
-                 keyPathOrGetSet: .left("landscapeImagePhone"),
-                 values: iOSTests.imagesAndNilsFixture)
-      }
-      testBoth(object.rp.image,
-               object: object,
-               keyPathOrGetSet: .left("image"),
-               values: iOSTests.imagesAndNilsFixture)
-//      testEventsDestination(object.rp.titleTextAttributes(for: .normal),
-//                            object: object,
-//                            keyPathOrGet: .right({ $0.titleTextAttributes(for: .normal) }),
-//                            values: /*TODO*/)
+        testEventsStream(object.rp.landscapeImagePhone,
+                         object: object,
+                         keyPathOrGetSet: .left("landscapeImagePhone"),
+                         values: iOSTests.imagesAndNilsFixture)
+      }
+      testEventsStream(object.rp.image,
+                       object: object,
+                       keyPathOrGetSet: .left("image"),
+                       values: iOSTests.imagesAndNilsFixture)
+      //      testEventsDestination(object.rp.titleTextAttributes(for: .normal),
+      //                            object: object,
+      //                            keyPathOrGet: .right({ $0.titleTextAttributes(for: .normal) }),
+      //                            values: /*TODO*/)
     }
 
     func testUILabel() {
       let object = UILabel()
 
-      testBoth(object.rp.text,
-               object: object,
-               keyPathOrGetSet: .left("text"),
-               values: iOSTests.stringsFixture)
-      testBoth(object.rp.font,
-               object: object,
-               keyPathOrGetSet: .left("font"),
-               values: iOSTests.fontsFiture)
-      testBoth(object.rp.textColor,
-               object: object,
-               keyPathOrGetSet: .left("textColor"),
-               values: iOSTests.colorsFiture)
-      testBoth(object.rp.shadowColor,
-               object: object,
-               keyPathOrGetSet: .left("shadowColor"),
-               values: iOSTests.colorsAndNilsFiture)
-      testBoth(object.rp.shadowOffset,
-               object: object,
-               keyPathOrGetSet: .right(getter: { $0.shadowOffset }, setter: { $0.shadowOffset = $1! }),
-               values: iOSTests.shadowOffsetsFixture)
-      testBoth(object.rp.textAlignment,
-               object: object,
-               keyPathOrGetSet: .right(getter: { $0.textAlignment }, setter: { $0.textAlignment = $1! }),
-               values: iOSTests.textAlignementFixture)
-      testBoth(object.rp.lineBreakMode,
-               object: object,
-               keyPathOrGetSet: .right(getter: { $0.lineBreakMode }, setter: { $0.lineBreakMode = $1! }),
-               values: iOSTests.lineBreakModeFixture)
-      testBoth(object.rp.attributedText,
-               object: object,
-               keyPathOrGetSet: .left("attributedText"),
-               values: iOSTests.attributedStringsFixture)
-      testBoth(object.rp.highlightedTextColor,
-               object: object,
-               keyPathOrGetSet: .left("highlightedTextColor"),
-               values: iOSTests.colorsAndNilsFiture)
-      testBoth(object.rp.isHighlighted,
-               object: object,
-               keyPathOrGetSet: .left("highlighted"),
-               values: iOSTests.boolFixture)
-      testBoth(object.rp.numberOfLines,
-               object: object,
-               keyPathOrGetSet: .left("numberOfLines"),
-               values: iOSTests.intFixture)
-      testBoth(object.rp.baselineAdjustment,
-               object: object,
-               keyPathOrGetSet: .right(getter: { $0.baselineAdjustment }, setter: { $0.baselineAdjustment = $1! }),
-               values: iOSTests.baselineAdjustmentFixture)
+      testEventsStream(object.rp.text,
+                       object: object,
+                       keyPathOrGetSet: .left("text"),
+                       values: iOSTests.stringsFixture)
+      testEventsStream(object.rp.font,
+                       object: object,
+                       keyPathOrGetSet: .left("font"),
+                       values: iOSTests.fontsFiture)
+      testEventsStream(object.rp.textColor,
+                       object: object,
+                       keyPathOrGetSet: .left("textColor"),
+                       values: iOSTests.colorsFiture)
+      testEventsStream(object.rp.shadowColor,
+                       object: object,
+                       keyPathOrGetSet: .left("shadowColor"),
+                       values: iOSTests.colorsAndNilsFiture)
+      testEventsStream(object.rp.shadowOffset,
+                       object: object,
+                       keyPathOrGetSet: .right(getter: { $0.shadowOffset }, setter: { $0.shadowOffset = $1! }),
+                       values: iOSTests.shadowOffsetsFixture)
+      testEventsStream(object.rp.textAlignment,
+                       object: object,
+                       keyPathOrGetSet: .right(getter: { $0.textAlignment }, setter: { $0.textAlignment = $1! }),
+                       values: iOSTests.textAlignementFixture)
+      testEventsStream(object.rp.lineBreakMode,
+                       object: object,
+                       keyPathOrGetSet: .right(getter: { $0.lineBreakMode }, setter: { $0.lineBreakMode = $1! }),
+                       values: iOSTests.lineBreakModeFixture)
+      testEventsStream(object.rp.attributedText,
+                       object: object,
+                       keyPathOrGetSet: .left("attributedText"),
+                       values: iOSTests.attributedStringsFixture)
+      testEventsStream(object.rp.highlightedTextColor,
+                       object: object,
+                       keyPathOrGetSet: .left("highlightedTextColor"),
+                       values: iOSTests.colorsAndNilsFiture)
+      testEventsStream(object.rp.isHighlighted,
+                       object: object,
+                       keyPathOrGetSet: .left("highlighted"),
+                       values: iOSTests.boolFixture)
+      testEventsStream(object.rp.numberOfLines,
+                       object: object,
+                       keyPathOrGetSet: .left("numberOfLines"),
+                       values: iOSTests.intFixture)
+      testEventsStream(object.rp.baselineAdjustment,
+                       object: object,
+                       keyPathOrGetSet: .right(getter: { $0.baselineAdjustment }, setter: { $0.baselineAdjustment = $1! }),
+                       values: iOSTests.baselineAdjustmentFixture)
     }
 
     func testUIDatePicker() {

        XCTAssertEqual(objectValue?.asyncNinjaOptionalValue, value.asyncNinjaOptionalValue, file: file, line: line)
      }
    }

    func testEventsSource<T: EventsSource, Object: NSObject>(
      _ eventsSource: T,
      object: Object,

        case let .right(setter):
          setter(object, value)
        }
        
        XCTAssertEqual((updatingIterator.next() as! T.Update?)?.asyncNinjaOptionalValue , value.asyncNinjaOptionalValue, file: file, line: line)
      }
    }
  }
  
  extension UIImage {
    class func draw(size: CGSize, opaque: Bool = false, scale: CGFloat = 0.0, drawer: (CGContext) -> Void) -> UIImage {
      UIGraphicsBeginImageContextWithOptions(size, opaque, scale);
