       isProtectedDataAvailable: .currently(false),
       remoteNotificationRegistration: .idle,
       statusBarOrientation: .currently(.unknown),
-      backgroundTasks: Set(),
+      backgroundTasks: [],
       isExperiencingHealthAuthorizationRequest: false,
       isIgnoringUserEvents: false,
       isIdleTimerDisabled: false,

          withName: task.name,
          expirationHandler: { [weak self] in
            if let strong = self {
              strong.application.endBackgroundTask(ID) // SIDE EFFECT!
              strong.model.backgroundTasks = Set(
                strong.model.backgroundTasks
                .filter { $0.name == task.name }
                .map {
                  var edit = $0
                  edit.state = .expired
                  return edit
                }
              )
              strong.output.on(.next(strong.model))

     Tasks marked completed are ended.
     Tasks marked in-progress that were removed are considered canceled and are removed.
     */
    let finished = model.backgroundTasks.flatMap { x -> UIBackgroundTaskIdentifier? in
      switch x.state {
      case .complete: return x.ID
      case .expiring: return x.ID
      default: return nil
      }
    }

    let deletions = RxUIApplication.deletions(
      old: Array(old.backgroundTasks),
      new: Array(model.backgroundTasks)
