         if let service = service {
             self.add(service: service.baseService)
             self.dispatch(.added(tag: anyTag, service: service))
-            if let serviceObserver = self.serviceObservers[anyTag]?.observer as? AnyObserver<Service> {
-                serviceObserver.onNext(service.baseService as! Service)
-                serviceObserver.onCompleted()
-                self.serviceObservers[anyTag] = nil
-            }
+            self.variable(for: anyTag)?.value = service
         }
     }
 

    }

    fileprivate var services: [AnyContextServiceTag: AnyContextService] = [:]
    fileprivate var serviceCallbacks: [AnyContextServiceTag: [ServiceDispatchCallback]] = [:]

    public func store<Tag: ContextServiceTag, Service>(service: Service?, for tag: Tag) where Service == Tag.Service {
        let anyTag = tag as? AnyContextServiceTag ?? AnyContextServiceTag(tag: tag)
        if let service = self.services[anyTag] {
            self.remove(service: service.baseService)
            self.dispatch(.removed(tag: anyTag, service: service))
        }

        let service = AnyContextService(optionalService: service)

    }
}

private struct ServiceVariableWrapper {

    let variable: Any
    weak var observable: AnyObject?

    public init<Service: ContextService>(variable: Variable<Service?>, observable: Observable<Service?>) {
        self.variable = variable
        self.observable = observable
    }
}

