anchor.diff:  public class MyServiceActivator implements ServiceActivator {
       @Override
       public void activate(ServiceActivatorContext context) {
  -        String containerName = "server";
  +        String containerName = "foo";
           ElectionPolicy policy = new MySingletonElectionPolicy();
           int quorum = 3;
           ServiceName name = ServiceName.parse("my.service.name");
  -        Service<?> service = new MyService();
  -        try {
  -            SingletonServiceBuilderFactory factory = (SingletonServiceBuilderFactory) context.getServiceRegistry().getRequiredService(SingletonServiceName.BUILDER.getServiceName(containerName))).awaitValue();
  -            factory.createSingletonServiceBuilder(name, service)
  +        // Use a SingletonServiceConfiguratorFactory backed by default cache of "foo" container
  +        Supplier<SingletonServiceConfiguratorFactory> factory = new ActiveServiceSupplier<>(context.getServiceTarget(), ServiceName.parse(SingletonDefaultCacheRequirement.SINGLETON_SERVICE_CONFIGURATOR_FACTORY.resolve(containerName).getName()));
  +        ServiceBuilder<?> builder = factory.get().createSingletonServiceConfigurator(name)
                   .electionPolicy(policy)
  -                .quorum(quorum)
  -                .build(context.getServiceTarget()).install();
  -        } catch (InterruptedException e) {
  -            throw new ServiceRegistryException(e);
  -        }
  +                .requireQuorum(quorum)
  +        		.build(context.getServiceTarget());
  +        Service service = new MyService();
  +        builder.setInstance(service).install();
       }
   }
   ----
  
positive.code:     @Override
      public void activate(ServiceActivatorContext context) {
          ServiceName name = ServiceName.parse("my.service.name");
          Service<?> service = new MyService();
          try {
              SingletonPolicy policy = (SingletonPolicy) context.getServiceRegistry().getRequiredService(ServiceName.parse(SingletonPolicy.CAPABILITY_NAME)).awaitValue();
              policy.createSingletonServiceBuilder(name, service).build(context.getServiceTarget()).install();
          } catch (InterruptedException e) {
              throw new ServiceRegistryException(e);
          }
      }
  }
  ----
  
negative.code: [[installing-an-msc-service-using-dynamic-singleton-policy]]
  == Installing an MSC service using dynamic singleton policy
  
  Alternatively, you can configure a singleton policy dynamically, which is particularly useful if you want to use a custom singleton election policy.
  `org.wildfly.clustering.singleton.service.SingletonPolicy` is a generalization of the `org.wildfly.clustering.singleton.service.SingletonServiceConfiguratorFactory` interface,
  which includes support for specifying an election policy and, optionally, a quorum.
  
  The 'SingletonServiceConfiguratorFactory' capability may be references using the following capability name:
  "org.wildfly.clustering.cache.singleton-service-configurator-factory" + _container-name_ + "." + _cache-name_
  
  You can reference a 'SingletonServiceConfiguratorFactory' using the default cache of a given cache container via the name:
  "org.wildfly.clustering.cache.default-singleton-service-configurator-factory" + _container-name_
  
  e.g.
  
  [source, java]
  