Reactive extensions. static var rx: Reactive<CompatibleType>.Type { get set } /// Reactive extensions. var rx: Reactive<CompatibleType> { get set } } extension ReactiveCompatible { /// Reactive extensions. public static var rx: Reactive<Self>.Type { get { return Reactive<Self>.self } set { // this enables using Reactive to "mutate" base type } } /// Reactive extensions. public var rx: Reactive<Self> { get { return Reactive(self) } set { // this enables using Reactive to "mutate" base object } } }