diff --git a/C++/preisach/preisachScalar/preisach.cc b/C++/preisach/preisachScalar/preisach.cc
index 343e3a134ef80c967bce81423defcf147f936955..7d57c032624c11a96527fef7b3296b3663aada3d 100644
--- a/C++/preisach/preisachScalar/preisach.cc
+++ b/C++/preisach/preisachScalar/preisach.cc
@@ -162,6 +162,8 @@ namespace preisachScalar_ns{
     void preisach::updatePilot()const{
         if (!isPilot){
             (*pilot) = (*this);
+
+            pilot->bAutoUpdateKL=false;
         }
     }
 
@@ -633,7 +635,6 @@ namespace preisachScalar_ns{
     void preisach::updateKL(){
         if(oKL == nullptr){
             // create KL
-            // cout << "created KL" << endl;
             oKL = make_shared<KL>(E->getDiscInputValues(), E->getMaxInputVal(), E->getMaxOutputVal(), 1);
         }
         if(!oKL->isValid()){
diff --git a/C++/preisach/preisachScalar/test_preisach.cc b/C++/preisach/preisachScalar/test_preisach.cc
index 28edb4c56f7086886d806744bccaca724bbc5ff5..b6bf2525a801cedf8bef1266b26810bcc5fd7c81 100644
--- a/C++/preisach/preisachScalar/test_preisach.cc
+++ b/C++/preisach/preisachScalar/test_preisach.cc
@@ -53,33 +53,36 @@ int main( /*int argc, char * argv[]*/){
 
 
     
-    shared_ptr<EverettMatrix>ptrE3  = make_shared<Everett_Lorentzian>(NA, maxH, maxB, -56.5895187, 35.203259, 0.0172599749, 0.207211005, 132.612003, 0.00348025117, true, "adaptive", 7.0);
 
-    cout << ptrE3->getName() << endl;
-    preisach p(ptrE3);
 
-    cout << "preisach created" << endl;
+    auto ev = std::make_shared<Everett_Lorentzian>(501, 1640, 1.5);
+    auto p = preisach(ev);
 
-    cout << p.pilotH(1000)->getB_interpolated() << " " << p.pilotH(0)->getB_interpolated() << endl;
-    cout << p.addH(1000) << " " << p.pilotH(0)->getB_interpolated() << endl;
-    cout << p.addH(1000) << " " << p.addH(0) << endl;
+    auto KL = p.getKL();
 
-    // p.demagnetise();
-    // double tmp = p.addB(1);
-    // cout << tmp << " " << endl;
+    auto KL_data = KL->GetData();
 
-    // p.demagnetise();
-    // cout << p.addH(tmp) << endl;
+    double H_1 = KL_data[KL_data.size()/2 + 4].first;
+    double H_2 = KL_data[KL_data.size()/2 + 6].first;
+    double H_3 = KL_data[KL_data.size()/2 + 8].first;
 
-    // p.demagnetise();
-    // cout << p.pilotB(1)->getH_interpolated() << " " << endl;
-    // cout << p.addB(1) << " " << endl;
+    assert_equal(p.pilotH(H_1)->getOutputVal_interpolated(), KL->EvaluateH(H_1));
 
+    p.addH(H_2);
+
+    assert_notequal(p.pilotH(H_1)->getOutputVal_interpolated(), KL->EvaluateH(H_1));
+
+    p.updateKL();
+    assert_equal(p.pilotH(H_1)->getOutputVal_interpolated(), KL->EvaluateH(H_1));
 
     p.demagnetise();
-    cout << p.pilotB(1)->getH_interpolated() << " " << p.pilotB(0)->getH_interpolated() << endl;
-    cout << p.addB(1) << " " << p.pilotB(0)->getH_interpolated() << endl;
-    cout << p.addB(1) << " " << p.addB(0) << endl;
+
+    p.setAutoUpdateKL(true);
+
+    p.addH(H_3);
+    cout << "hereThere" << endl;
+    assert_equal(p.pilotH(H_1)->getOutputVal_interpolated(), KL->EvaluateH(H_1));
+    cout << "hereTadfhere" << endl;
 
     return 0;
     p.addH(1640);
diff --git a/C++/preisach/preisachScalar/unitTest b/C++/preisach/preisachScalar/unitTest
index b7f5ced82f63cc7b86fcd9556921cf5b36d9d041..0cb0e0897c262b58fcafeb745fb6399685ab500d 100755
Binary files a/C++/preisach/preisachScalar/unitTest and b/C++/preisach/preisachScalar/unitTest differ
diff --git a/pythonExamples/preisach/visoMagCurveDynamically.py b/pythonExamples/preisach/visoMagCurveDynamically.py
index d2e2cbf46b4f97aa83979e06b9376393d74fa8f0..f36db2db27d1fb01c5c2df73dd08e09d5c6e5fbb 100644
--- a/pythonExamples/preisach/visoMagCurveDynamically.py
+++ b/pythonExamples/preisach/visoMagCurveDynamically.py
@@ -45,7 +45,7 @@ P_perfectDemag.usePerfectDemag = True
 # -----------   Input
 # -----------------------------------------------------------------------------
 
-N = 5000
+N = 500
 
 
 # val = np.linspace(0, maxH/16, N)
@@ -129,7 +129,7 @@ for v in val:
 	H_perfectDemag_KL_dyn = data[:, 0]
 	B_perfectDemag_KL_dyn = data[:, 1]
 
-	if i % 100 == 0:
+	if i % 10 == 0:
 
 		plt.figure(1)
 		plt.clf()