class ConfigurationImpl implements Configuration {

    @Override
    public void removeMemberReplicaForShard(final String shardName, final MemberName newMemberName) {
        checkNotNullShardName(shardName);
        requireNonNull(newMemberName, "MemberName should not be null");

        for (ModuleConfig moduleConfig: moduleConfigMap.values()) {
            ShardConfig shardConfig = moduleConfig.getShardConfig(shardName);
            if (shardConfig != null) {
                Set<MemberName> replicas = new HashSet<>(shardConfig.getReplicas());
                replicas.remove(newMemberName);
                updateModuleConfigMap(ModuleConfig.builder(moduleConfig).shardConfig(shardName, replicas).build());
                return;
            }
        }
    }

    public  ConfigurationImpl(final String moduleShardsConfigPath, final String modulesConfigPath);
    public  ConfigurationImpl(final ModuleShardConfigProvider provider);

}