     static var lifecycleObject: UInt8 = 1
 }
 
+/**
+ * Protocol that allows various objects to take advantage of reactive.lifetime signal
+ */
 public protocol Disposing: class { }
-
 
 extension Disposing {
     fileprivate var lifecycleObject: NSObject {

    return associatedProperty!
}

public func lazyMutableProperty<T>(_ host: AnyObject, _ key: UnsafePointer<Void>, _ setter: @escaping (T) -> (), _ getter: () -> T) -> MutableProperty<T> {
    return lazyAssociatedProperty(host, key) {
        let property = MutableProperty<T>(getter())

}

extension SignalProducerProtocol where Value == Void, Error == NoError {
    /// Perform side effect
    public static func sideEffect(actions: @escaping () -> ()) -> SignalProducer<(), NoError> {
        return SignalProducer<(), NoError> { sink, _ in
            actions()
