     _ application: UIApplication,
     shouldAllowExtensionPointIdentifier ID: UIApplicationExtensionPointIdentifier
   ) -> Bool {
-    if var model = model {
-      model.extensionPointIdentifier = .considering(ID)
-      output.on(.next(model))
-    }
-    if let model = model, case .allowing(let allowed) = model.extensionPointIdentifier {
+    var edit = model
+    edit.extensionPointIdentifier = .considering(ID)
+    output.on(.next(edit))
+    if case .allowing(let allowed) = model.extensionPointIdentifier {
       return ID == allowed
     } else {
       return false

    continue userActivity: NSUserActivity,
    restorationHandler: @escaping ([Any]?) -> Void
  ) -> Bool {
    if var model = model {
      model.userActivityState = .isContinuing(userActivity)
      output.on(.next(model))
    }
    return model?.activitiesWithAvaliableData.contains(userActivity) == true
  }

  func application(

    open url: URL,
    options: [UIApplicationOpenURLOptionsKey : Any] = [:]
  ) -> Bool {
    var edit = model
    edit.URL = .considering(.ios9(url: url, options: options))
    output.on(.next(edit))
    if case .allowing(let allowed) = model.URL {
      return url == allowed
    } else {
      return false
