anchor.diff:          return ConnectForm();
         case StartupState.login:
           return LoginForm();
  +      case StartupState.startingService:
  +        return CircularProgressIndicator();
       }
       return null;
     }
   
     Widget _buildContent() {
  -    return Consumer2<connection.Manager, authentication.Manager>(
  -      builder: (context, connectionManager, authenticationManager, child) {
  -        final state = _computeState(connectionManager.state, authenticationManager.state);
  +    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.login,
  +            reverse: state == StartupState.connect,
               transitionBuilder: (
                 Widget child,
                 Animation<double> animation,
  
positive.code:             return StartupState.reconnecting;
            case authentication.State.authenticating:
            case authentication.State.unauthenticated:
            case authentication.State.authenticated:
              return StartupState.login;
          }
      }
      return null;
  
negative.code:   reconnecting,
    connect,
    login,
    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, polaris.State serviceState) {
      switch (connectionState) {
        case connection.State.reconnecting:
          return StartupState.reconnecting;
  