diff --git a/spec/value_ref/value_ref_indirect.spec.ts b/spec/value_ref/value_ref_indirect.spec.ts
deleted file mode 100644
index aca3ba20d54efab48f4e95bc6fe2a572a1bf8212..0000000000000000000000000000000000000000
--- a/spec/value_ref/value_ref_indirect.spec.ts
+++ /dev/null
@@ -1,197 +0,0 @@
-import { CreateStructure, cSnCirc, cSnTrapez, LoiDebit, ParamsSectionCirc,
-         ParamsSectionTrapez, Session } from "../../src/index";
-import { PabDimension, PabDimensionParams } from "../../src/pab/pab_dimension";
-import { RegimeUniforme } from "../../src/regime_uniforme";
-import { SectionParametree } from "../../src/section/section_parametree";
-import { Dever, DeverParams } from "../../src/structure/dever";
-
-/**
- * IMPORTANT !
- * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine")
- * Pour exécuter ce code dans le débugger.
- * Faire de même avec le fichier test_func.ts
- */
-// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine";
-
-let nub1: RegimeUniforme;
-let prm1: ParamsSectionCirc;
-let nub2: SectionParametree;
-let prm2: ParamsSectionTrapez;
-let nub3: PabDimension;
-let prm3: PabDimensionParams;
-let nub4: Dever;
-let prm4: DeverParams;
-
-/**
- * crée l'environnement de test.
- * répété à chaque test car il manque un mock de beforeEach
- */
-function createEnv() {
-    // Nub 1 : Régime Uniforme
-    const paramSect = new ParamsSectionCirc(2, 0.6613, 40, 1.2, 0.001, 1);
-    paramSect.Pr.singleValue = 0.01;
-    const sect = new cSnCirc(paramSect);
-    nub1 = new RegimeUniforme(sect);
-    prm1 = nub1.section.prms as ParamsSectionCirc;
-
-    // Nub 2 : Section Paramétrée
-    const prmsS = new ParamsSectionTrapez(1, 0.5, 1, 0.01, 1, 0.01, 2);
-    prmsS.Pr.singleValue = 0.01;
-    nub2 = new SectionParametree(new cSnTrapez(prmsS));
-    prm2 = nub2.section.prms as ParamsSectionTrapez; // = prmsS
-
-    // Nub 3 : Passe à Bassins : Dimensions
-    prm3 = new PabDimensionParams(2, 1, 0.5, 2);
-    nub3 = new PabDimension(prm3);
-
-    // Nub 4 : Déversoirs Dénoyés
-    prm4 = new DeverParams(0.5, 102, 10, 99);
-    prm4.Pr.singleValue = 0.01;
-    nub4 = new Dever(prm4);
-    nub4.addChild(
-        CreateStructure(
-            LoiDebit.WeirFree,
-            nub4,
-            false
-        )
-    );
-
-    Session.getInstance().clear();
-    Session.getInstance().registerNub(nub1);
-    Session.getInstance().registerNub(nub2);
-    Session.getInstance().registerNub(nub3);
-    Session.getInstance().registerNub(nub4);
-}
-
-describe("référence indirecte d'un paramètre à un autre : ", () => {
-
-    it("paramètre simple", () => {
-        // cas de figure :
-        // nub3.Y est lié à nub1.Y par l'intermédiaire de nub2.Y
-        // lecture de nub3.Y
-
-        createEnv();
-
-        prm3.Y.singleValue = 0.1;  // valeur esclave, doit être masquée par la valeur maître (cad prm1.Y)
-        prm3.Y.defineReference(nub2.section, "Y");
-        prm2.Y.defineReference(nub1.section, "Y");
-
-        nub3.CalcSerie();
-
-        expect(prm3.Y.v).toBeCloseTo(0.6613);
-    });
-
-    it("paramètre varié", () => {
-        // cas de figure :
-        // nub3.Y est lié à nub1.Y par l'intermédiaire de nub2.Y
-        // lecture de nub3.Y
-
-        createEnv();
-
-        prm3.Y.singleValue = 0.1;  // valeur esclave, doit être masquée par la valeur maître (cad prm1.Y)
-        prm3.Y.defineReference(nub2.section, "Y");
-        prm2.Y.defineReference(nub1.section, "Y");
-        prm1.Y.setValues(2, 5, 1);
-
-        nub3.CalcSerie();
-
-        expect(nub3.result.nbResultElements).toBe(4);
-    });
-
-    it("résultat simple", () => {
-        // cas de figure :
-        // nub3.Y est lié à nub1.Y par l'intermédiaire de nub2.Y
-        // lecture de nub3.Y
-
-        createEnv();
-
-        prm3.Y.singleValue = 0.1;  // valeur esclave, doit être masquée par la valeur maître (cad prm1.Y)
-        prm3.Y.defineReference(nub2.section, "Y");
-        prm2.Y.defineReference(nub1.section, "Y");
-
-        prm1.Ks.singleValue = 42;
-        nub1.calculatedParam = prm1.Y;
-
-        nub3.CalcSerie();
-
-        expect(prm3.Y.v).toBeCloseTo(0.95);
-    });
-
-    it("résultat varié", () => {
-        // cas de figure :
-        // nub3.Y est lié à nub1.Y par l'intermédiaire de nub2.Y
-        // lecture de nub3.Y
-
-        createEnv();
-
-        prm3.Y.singleValue = 0.1;  // valeur esclave, doit être masquée par la valeur maître (cad prm1.Y)
-        prm3.Y.defineReference(nub2.section, "Y");
-        prm2.Y.defineReference(nub1.section, "Y");
-
-        prm1.D.setValues(2.5, 7, 0.5);
-        prm1.Ks.singleValue = 42;
-        nub1.calculatedParam = prm1.Y;
-
-        nub3.CalcSerie();
-
-        expect(nub3.result.nbResultElements).toBe(10);
-
-        const refVals = [ 2.339, 2.506, 2.641, 2.755, 2.854, 2.942, 3.022, 3.095, 3.163, 3.226 ];
-
-        let i = 0;
-        for (const v of nub3.result.resultElements) {
-            expect(v).toBeDefined();
-            expect(v.vCalc).toBeCloseTo(refVals[i]);
-            i++;
-        }
-    });
-
-    it("résultat complémentaire simple", () => {
-        // cas de figure :
-        // nub1.Q est lié à nub4.Q par l'intermédiaire de nub2.Q
-        // lecture de nub3.Q
-
-        createEnv();
-
-        prm1.Q.singleValue = 0.1;  // valeur esclave, doit être masquée par la valeur maître (cad prm4.Q)
-        prm1.Q.defineReference(nub2.section, "Q");
-        nub1.calculatedParam = prm1.Ks;
-        prm2.Q.defineReference(nub4, "CvQT");
-
-        nub4.calculatedParam = prm4.Z1;
-
-        nub1.CalcSerie();
-
-        expect(prm1.Q.v).toBeCloseTo(0.501);
-    });
-
-    it("résultat complémentaire varié", () => {
-        // cas de figure :
-        // nub1.Q est lié à nub4.CvQT par l'intermédiaire de nub2.Q
-        // lecture de nub3.Q
-
-        createEnv();
-
-        prm1.Q.singleValue = 0.1;  // valeur esclave, doit être masquée par la valeur maître (cad prm4.Q)
-        prm1.Q.defineReference(nub2.section, "Q");
-        nub1.calculatedParam = prm1.Ks;
-        prm2.Q.defineReference(nub4, "CvQT");
-
-        prm4.Q.setValues(0.5, 4, 0.5);
-        nub4.calculatedParam = prm4.Z1;
-
-        nub1.CalcSerie();
-
-        expect(nub1.result.nbResultElements).toBe(8);
-
-        const refVals = [ 33.629, 68.304, 101.546, 136.533, 169.639, 205.066, 236.892, 273.287 ];
-
-        let i = 0;
-        for (const v of nub1.result.resultElements) {
-            expect(v).toBeDefined();
-            expect(v.vCalc).toBeCloseTo(refVals[i]);
-            i++;
-        }
-    });
-
-});
diff --git a/src/nub.ts b/src/nub.ts
index e5a8c7f7fb3e796b31c949fcc45b3ea065c7b322..e5cb9379d75054b1b2bdd0bb4da1ee4324903294 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -162,6 +162,7 @@ export abstract class Nub extends ComputeNode implements IObservable {
                 if (newCalculatedParam) {
                     this.calculatedParam = newCalculatedParam;
                 } else {
+                    // @TODO throws when a new linkable nub is added, and all parameters are already linked !
                     throw Error("resetDefaultCalculatedParam : could not find any SINGLE parameter");
                 }
             } else {
diff --git a/src/section/section_nub.ts b/src/section/section_nub.ts
index c53b7cda13a8dd46ba051405868d6fb25932b461..49ce255f26d4a3c61eacec72da8aeaac894d33e0 100644
--- a/src/section/section_nub.ts
+++ b/src/section/section_nub.ts
@@ -96,6 +96,8 @@ export abstract class SectionNub extends Nub {
                 this._children[0] = undefined;
             }
             this.replaceChild(0, s);
+            // Y from Section is not linkable here
+            this.section.prms.Y.undefineFamily();
         }
     }
 }