anchor.diff:    reconnecting,
     connect,
     login,
  -  // TODO add state for starting service
  +  startingService,
   }
   
   class StartupPage extends StatelessWidget {
     final Widget _logo = SvgPicture.asset('assets/images/logo.svg', semanticsLabel: 'Polaris logo');
   
  -  StartupState _computeState(connection.State connectionState, authentication.State authenticationState) {
  +  StartupState _computeState(
  +      connection.State connectionState, authentication.State authenticationState, polaris.State serviceState) {
       switch (connectionState) {
         case connection.State.reconnecting:
           return StartupState.reconnecting;
  
positive.code:             return StartupState.reconnecting;
            case authentication.State.authenticating:
            case authentication.State.unauthenticated:
            case authentication.State.authenticated:
              return StartupState.login;
          }
      }
      return null;
  
negative.code:         return ConnectForm();
        case StartupState.login:
          return LoginForm();
        case StartupState.startingService:
          return CircularProgressIndicator();
      }
      return null;
    }
  
    Widget _buildContent() {
      return Consumer3<connection.Manager, authentication.Manager, polaris.API>(
        builder: (context, connectionManager, authenticationManager, polarisAPI, child) {
          final state = _computeState(connectionManager.state, authenticationManager.state, polarisAPI.state);
          final widget = _buildWidgetForState(state);
          return PageTransitionSwitcher(
              reverse: state == StartupState.connect,
              transitionBuilder: (
                Widget child,
                Animation<double> animation,
  