diff --git a/VAE/08-VAE-with-CelebA.ipynb b/VAE/08-VAE-with-CelebA.ipynb
index 41ab4c283679e921d6e752511adadba68d5f7f01..ff32fda135c12f8baf2e0ac6e7892c32689633ec 100644
--- a/VAE/08-VAE-with-CelebA.ipynb
+++ b/VAE/08-VAE-with-CelebA.ipynb
@@ -37,146 +37,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<style>\n",
-       "\n",
-       "div.warn {    \n",
-       "    background-color: #fcf2f2;\n",
-       "    border-color: #dFb5b4;\n",
-       "    border-left: 5px solid #dfb5b4;\n",
-       "    padding: 0.5em;\n",
-       "    font-weight: bold;\n",
-       "    font-size: 1.1em;;\n",
-       "    }\n",
-       "\n",
-       "\n",
-       "\n",
-       "div.nota {    \n",
-       "    background-color: #DAFFDE;\n",
-       "    border-left: 5px solid #92CC99;\n",
-       "    padding: 0.5em;\n",
-       "    }\n",
-       "\n",
-       "div.todo:before { content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1My44OTEyIiBoZWlnaHQ9IjE0My4zOTAyIiB2aWV3Qm94PSIwIDAgNTMuODkxMiAxNDMuMzkwMiI+PHRpdGxlPjAwLUJvYi10b2RvPC90aXRsZT48cGF0aCBkPSJNMjMuNDU2OCwxMTQuMzAxNmExLjgwNjMsMS44MDYzLDAsMSwxLDEuODE1NywxLjgyNEExLjgyMDksMS44MjA5LDAsMCwxLDIzLjQ1NjgsMTE0LjMwMTZabS0xMC42NjEyLDEuODIyQTEuODI3MiwxLjgyNzIsMCwxLDAsMTAuOTgsMTE0LjMsMS44MiwxLjgyLDAsMCwwLDEyLjc5NTYsMTE2LjEyMzZabS03LjcwNyw0LjU4NzR2LTVzLjQ4NjMtOS4xMjIzLDguMDIxNS0xMS45Njc1YTE5LjIwODIsMTkuMjA4MiwwLDAsMSw2LjA0ODYtMS4yNDU0LDE5LjE3NzgsMTkuMTc3OCwwLDAsMSw2LjA0ODcsMS4yNDc1YzcuNTM1MSwyLjgzNDcsOC4wMTc0LDExLjk2NzQsOC4wMTc0LDExLjk2NzR2NS4wMjM0bC4wMDQyLDcuNjgydjIuNGMuMDE2Ny4xOTkyLjAzMzYuMzkyMS4wMzM2LjU4NzEsMCwuMjEzOC0uMDE2OC40MTA5LS4wMzM2LjYzMzJ2LjA1ODdoLS4wMDg0YTguMzcxOSw4LjM3MTksMCwwLDEtNy4zNzM4LDcuNjU0N3MtLjk5NTMsMy42MzgtNi42OTMzLDMuNjM4LTYuNjkzNC0zLjYzOC02LjY5MzQtMy42MzhhOC4zNyw4LjM3LDAsMCwxLTcuMzcxNi03LjY1NDdINS4wODQzdi0uMDU4N2MtLjAxODktLjIyLS4wMjk0LS40MTk0LS4wMjk0LS42MzMyLDAtLjE5MjkuMDE2Ny0uMzgzNy4wMjk0LS41ODcxdi0yLjRtMTguMDkzNy00LjA0YTEuMTU2NSwxLjE1NjUsMCwxLDAtMi4zMTI2LDAsMS4xNTY0LDEuMTU2NCwwLDEsMCwyLjMxMjYsMFptNC4wODM0LDBhMS4xNTk1LDEuMTU5NSwwLDEsMC0xLjE2MzYsMS4xN0ExLjE3NSwxLjE3NSwwLDAsMCwyNy4yNjE0LDEyNC4zNzc5Wk05LjM3MzksMTE0LjYzNWMwLDMuMTA5MywyLjQxMzIsMy4zMSwyLjQxMzIsMy4zMWExMzMuOTI0MywxMzMuOTI0MywwLDAsMCwxNC43MzQ4LDBzMi40MTExLS4xOTI5LDIuNDExMS0zLjMxYTguMDc3Myw4LjA3NzMsMCwwLDAtMi40MTExLTUuNTUxOWMtNC41LTMuNTAzMy05LjkxMjYtMy41MDMzLTE0Ljc0MTEsMEE4LjA4NTEsOC4wODUxLDAsMCwwLDkuMzczOSwxMTQuNjM1WiIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjMzLjE0MzYiIGN5PSIxMjQuNTM0IiByPSIzLjgzNjMiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48cmVjdCB4PSIzNS42NjU5IiB5PSIxMTIuOTYyNSIgd2lkdGg9IjIuMDc3IiBoZWlnaHQ9IjEwLjU0NTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxLjYgMjQxLjExMjEpIHJvdGF0ZSgtMTU1Ljc0NikiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48Y2lyY2xlIGN4PSIzOC44NzA0IiBjeT0iMTEzLjQyNzkiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjUuMjI0OCIgY3k9IjEyNC41MzQiIHI9IjMuODM2MyIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxyZWN0IHg9IjEuNDE2NCIgeT0iMTI0LjYzMDEiIHdpZHRoPSIyLjA3NyIgaGVpZ2h0PSIxMC41NDU4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjkwOTcgMjU5LjgwNikgcm90YXRlKC0xODApIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PGNpcmNsZSBjeD0iMi40MDkxIiBjeT0iMTM3LjA5OTYiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxwYXRoIGQ9Ik0xOC4wNTExLDEwMC4xMDY2aC0uMDE0NlYxMDIuNjFoMi4zdi0yLjQyNzlhMi40MjI5LDIuNDIyOSwwLDEsMC0yLjI4NTQtLjA3NTVaIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PHBhdGggZD0iTTM5LjQyMTQsMjcuMjU4djEuMDVBMTEuOTQ1MiwxMS45NDUyLDAsMCwwLDQ0LjU5NTQsNS43OWEuMjQ0OS4yNDQ5LDAsMCwxLS4wMjM1LS40MjI3TDQ2Ljc1LDMuOTUxNWEuMzg5Mi4zODkyLDAsMCwxLC40MjYyLDAsMTQuODQ0MiwxNC44NDQyLDAsMCwxLTcuNzU0MywyNy4yNTkxdjEuMDY3YS40NS40NSwwLDAsMS0uNzA0Ny4zNzU4bC0zLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsMC0uNzUxNmwzLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsLjY5NDYuMzc1OFpNNDMuMjMsMi41ODkyLDM5LjM4NzguMDc5NGEuNDUuNDUsMCwwLDAtLjcwNDYuMzc1OHYxLjA2N2ExNC44NDQyLDE0Ljg0NDIsMCwwLDAtNy43NTQzLDI3LjI1OTEuMzg5LjM4OSwwLDAsMCwuNDI2MSwwbDIuMTc3Ny0xLjQxOTNhLjI0NS4yNDUsMCwwLDAtLjAyMzUtLjQyMjgsMTEuOTQ1MSwxMS45NDUxLDAsMCwxLDUuMTc0LTIyLjUxNDZ2MS4wNWEuNDUuNDUsMCwwLDAsLjcwNDYuMzc1OGwzLjg1NTMtMi41MWEuNDUuNDUsMCwwLDAsMC0uNzUxNlpNMzkuMDUyMywxNC4yNDU4YTIuMTIwNiwyLjEyMDYsMCwxLDAsMi4xMjA2LDIuMTIwNmgwQTIuMTI0LDIuMTI0LDAsMCwwLDM5LjA1MjMsMTQuMjQ1OFptNi4wNzMyLTQuNzc4MS44MjU0LjgyNTVhMS4wNTY4LDEuMDU2OCwwLDAsMSwuMTE3NSwxLjM0MjFsLS44MDIsMS4xNDQyYTcuMTAxOCw3LjEwMTgsMCwwLDEsLjcxMTQsMS43MTEybDEuMzc1Ny4yNDE2YTEuMDU2OSwxLjA1NjksMCwwLDEsLjg3NTcsMS4wNHYxLjE2NDNhMS4wNTY5LDEuMDU2OSwwLDAsMS0uODc1NywxLjA0bC0xLjM3MjQuMjQxNkE3LjExLDcuMTEsMCwwLDEsNDUuMjcsMTkuOTNsLjgwMTksMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLS4xMTc0LDEuMzQyMmwtLjgyODguODQ4OWExLjA1NywxLjA1NywwLDAsMS0xLjM0MjEuMTE3NGwtMS4xNDQyLS44MDE5YTcuMTMzOCw3LjEzMzgsMCwwLDEtMS43MTEzLjcxMTNsLS4yNDE2LDEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLTEuMDQuODc1N0gzOC40Njg0YTEuMDU2OCwxLjA1NjgsMCwwLDEtMS4wNC0uODc1N2wtLjI0MTYtMS4zNzI0YTcuMTM1NSw3LjEzNTUsMCwwLDEtMS43MTEzLS43MTEzbC0xLjE0NDEuODAxOWExLjA1NzEsMS4wNTcxLDAsMCwxLTEuMzQyMi0uMTE3NGwtLjgzNTUtLjgyNTVhMS4wNTcsMS4wNTcsMCwwLDEtLjExNzQtMS4zNDIxbC44MDE5LTEuMTQ0MmE3LjEyMSw3LjEyMSwwLDAsMS0uNzExMy0xLjcxMTJsLTEuMzcyNC0uMjQxNmExLjA1NjksMS4wNTY5LDAsMCwxLS44NzU3LTEuMDRWMTUuNzgyNmExLjA1NjksMS4wNTY5LDAsMCwxLC44NzU3LTEuMDRsMS4zNzU3LS4yNDE2YTcuMTEsNy4xMSwwLDAsMSwuNzExNC0xLjcxMTJsLS44MDItMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLC4xMTc1LTEuMzQyMmwuODI1NC0uODI1NEExLjA1NjgsMS4wNTY4LDAsMCwxLDM0LjMyNDUsOS4zNmwxLjE0NDIuODAxOUE3LjEzNTUsNy4xMzU1LDAsMCwxLDM3LjE4LDkuNDUxbC4yNDE2LTEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLDEuMDQtLjg3NTdoMS4xNjc3YTEuMDU2OSwxLjA1NjksMCwwLDEsMS4wNC44NzU3bC4yNDE2LDEuMzcyNGE3LjEyNSw3LjEyNSwwLDAsMSwxLjcxMTIuNzExM0w0My43NjY2LDkuMzZBMS4wNTY5LDEuMDU2OSwwLDAsMSw0NS4xMjU1LDkuNDY3N1ptLTIuMDMsNi44OTg3QTQuMDQzMyw0LjA0MzMsMCwxLDAsMzkuMDUyMywyMC40MWgwQTQuMDQ2NSw0LjA0NjUsMCwwLDAsNDMuMDk1NSwxNi4zNjY0WiIgc3R5bGU9ImZpbGw6I2UxMjIyOSIvPjxwb2x5Z29uIHBvaW50cz0iMzkuNDEzIDM0Ljc1NyAzOS41MzcgMzQuNzU3IDM5LjY3NSAzNC43NTcgMzkuNjc1IDEwOS41MSAzOS41MzcgMTA5LjUxIDM5LjQxMyAxMDkuNTEgMzkuNDEzIDM0Ljc1NyAzOS40MTMgMzQuNzU3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjMwODg1NDQ1MDU2MDE2MThweDtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==);\n",
-       "    float:left;\n",
-       "    margin-right:20px;\n",
-       "    margin-top:-20px;\n",
-       "    margin-bottom:20px;\n",
-       "}\n",
-       "div.todo{\n",
-       "    font-weight: bold;\n",
-       "    font-size: 1.1em;\n",
-       "    margin-top:40px;\n",
-       "}\n",
-       "div.todo ul{\n",
-       "    margin: 0.2em;\n",
-       "}\n",
-       "div.todo li{\n",
-       "    margin-left:60px;\n",
-       "    margin-top:0;\n",
-       "    margin-bottom:0;\n",
-       "}\n",
-       "\n",
-       "div .comment{\n",
-       "    font-size:0.8em;\n",
-       "    color:#696969;\n",
-       "}\n",
-       "\n",
-       "\n",
-       "\n",
-       "</style>\n",
-       "\n"
-      ],
-      "text/plain": [
-       "<IPython.core.display.HTML object>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Override : Attribute [run_dir=./run/CelebA.001] with [./run/test-VAE8-3370]\n"
-     ]
-    },
-    {
-     "data": {
-      "text/markdown": [
-       "**FIDLE 2020 - Practical Work Module**"
-      ],
-      "text/plain": [
-       "<IPython.core.display.Markdown object>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Version              : 0.6.1 DEV\n",
-      "Notebook id          : VAE8\n",
-      "Run time             : Wednesday 6 January 2021, 19:47:34\n",
-      "TensorFlow version   : 2.2.0\n",
-      "Keras version        : 2.3.0-tf\n",
-      "Datasets dir         : /home/pjluc/datasets/fidle\n",
-      "Run dir              : ./run/test-VAE8-3370\n",
-      "Update keras cache   : False\n",
-      "Save figs            : True\n",
-      "Path figs            : ./run/test-VAE8-3370/figs\n"
-     ]
-    },
-    {
-     "data": {
-      "text/markdown": [
-       "<br>**FIDLE 2021 - VAE**"
-      ],
-      "text/plain": [
-       "<IPython.core.display.Markdown object>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Version              : 1.2\n",
-      "TensorFlow version   : 2.2.0\n",
-      "Keras version        : 2.3.0-tf\n"
-     ]
-    },
-    {
-     "data": {
-      "text/markdown": [
-       "<br>**FIDLE 2020 - DataGenerator**"
-      ],
-      "text/plain": [
-       "<IPython.core.display.Markdown object>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Version              : 0.4.1\n",
-      "TensorFlow version   : 2.2.0\n",
-      "Keras version        : 2.3.0-tf\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "import numpy as np\n",
     "from skimage import io\n",
@@ -205,7 +68,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -231,7 +94,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -272,17 +135,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Train directory is : ./data/clusters-128x128\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "# ---- Override parameters (batch mode) - Just forget this line\n",
     "#\n",
@@ -304,17 +159,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Data generator is ready with : 379 batchs of 32 images, or 12155 images\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "data_gen = DataGenerator(train_dir, 32, k_size=scale)\n",
     "\n",
@@ -337,7 +184,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -370,7 +217,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -423,8 +270,8 @@
    "metadata": {},
    "source": [
     "## Step 4 - Train\n",
-    "20' on a CPU  \n",
-    "1'12 on a GPU (V100, IDRIS)"
+    "20' for 10 epochs on a V100 (IDRIS)  \n",
+    "...on a basic CPU, may be >40 hours !"
    ]
   },
   {
diff --git a/VAE/batch_slurm.sh b/VAE/batch_slurm.sh
index 35535d3757cf67a5cbc6cdf1c6ed15b72a8b7b4c..746abe707065c68472368ace8d0031434279ef51 100755
--- a/VAE/batch_slurm.sh
+++ b/VAE/batch_slurm.sh
@@ -46,7 +46,7 @@ export FIDLE_OVERRIDE_VAE8_run_dir="./run/CelebA.$SLURM_JOB_ID"
 export FIDLE_OVERRIDE_VAE8_scale="0.05"
 export FIDLE_OVERRIDE_VAE8_image_size="(128,128)"
 export FIDLE_OVERRIDE_VAE8_enhanced_dir='{datasets_dir}/celeba/enhanced'
-export FIDLE_OVERRIDE_VAZ8_r_loss_factor="0.5"
+export FIDLE_OVERRIDE_VAE8_r_loss_factor="0.5"
 
 # ---- By default (no need to modify)
 #
diff --git a/fidle/pwk.py b/fidle/pwk.py
index 0d2ee4a3362ce4882d1a7af9188ac2fe9cf796e0..2e1b147bb9de38533dc644eaa245438667aa0d53 100644
--- a/fidle/pwk.py
+++ b/fidle/pwk.py
@@ -93,7 +93,7 @@ def init(name=None, run_dir='./run'):
     
     # ---- Hello world
     #
-    display_md('**FIDLE 2020 - Practical Work Module**')
+    display_md('<br>**FIDLE 2020 - Practical Work Module**')
     print('Version              :', config.VERSION)
     print('Notebook id          :', notebook_id)
     print('Run time             :', _start_time.strftime("%A %-d %B %Y, %H:%M:%S"))
@@ -210,7 +210,11 @@ def override(*names):
         #
         setattr(main,name,new_value)
         overrides[name]=new_value
-        print(f'Override : Attribute [{name}={value_old}] with [{new_value}]')        
+
+    if len(overrides)>0:
+        display_md('**\*\* Overrided parameters : \*\***')
+        for name,value in overrides.items():
+            print(f'{name:20s} : {value}')
     return overrides
       
     
@@ -765,22 +769,27 @@ def check_finished_file():
         print(f'** Finished file should be at : {config.FINISHED_FILE}\n')
         return False
     return True
+
     
-    
-def reset_finished_file():
-    if check_finished_file()==False : return
-    data={}
-    # ---- Save it
-    with open(config.FINISHED_FILE,'wt') as fp:
-        json.dump(data,fp,indent=4)
-    print(f'Finished file has been reset.\n')
+def reset_finished_file(verbose=False):
+    try:
+        data={}
+        with open(config.FINISHED_FILE,'wt') as fp:
+            json.dump(data,fp,indent=4)
+        if verbose : print(f'Finished file has been reset.\n')
+    except:
+        print(f'\n**Warning : cannot reset finished file ({config.FINISHED_FILE})\n')
+        return False
+    return True
     
     
 def update_finished_file(start=False, end=False):
       
     # ---- No writable finished file ?
-    if check_finished_file() is False : return
-    
+    if not os.access(config.FINISHED_FILE, os.W_OK): 
+        done = reset_finished_file()
+        if not done : return
+        
     # ---- Load it
     with open(config.FINISHED_FILE) as fp:
         data = json.load(fp)