diff --git a/images/c4s-jenkins.png b/images/c4s-jenkins.png
new file mode 100644
index 0000000..3c12a92
Binary files /dev/null and b/images/c4s-jenkins.png differ
diff --git a/images/c4s-jenkinsjob.png b/images/c4s-jenkinsjob.png
new file mode 100644
index 0000000..34d429d
Binary files /dev/null and b/images/c4s-jenkinsjob.png differ
diff --git a/images/jenkins-base.png b/images/jenkins-base.png
new file mode 100644
index 0000000..88f8395
Binary files /dev/null and b/images/jenkins-base.png differ
diff --git a/images/logo.png b/images/logo.png
deleted file mode 100644
index b5985fd..0000000
Binary files a/images/logo.png and /dev/null differ
diff --git a/slides.ipynb b/slides.ipynb
index 2125076..7de9ea2 100644
--- a/slides.ipynb
+++ b/slides.ipynb
@@ -1,176 +1,310 @@
 {
  "cells": [
   {
    "cell_type": "code",
    "execution_count": 1,
    "metadata": {
     "slideshow": {
      "slide_type": "skip"
     }
    },
    "outputs": [],
    "source": [
     "cd ../so-workshop"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {
     "slideshow": {
      "slide_type": "slide"
     }
    },
    "source": [
     "# So, you want to go open Science ?\n",
     "## WORKSHOP TIME !\n",
     "\n",
-    "<br/><br/>\n",
-    "![](./images/logo.png)\n",
-    "<br/><br/>\n",
-    "\n",
     "<center>SCITAS training with expertise from the EPFL Library</center>\n",
+    "\n",
     "<center>Nicolas Richart and Jean-Baptiste Aubort - SCITAS</center>"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {
     "slideshow": {
      "slide_type": "slide"
     }
    },
    "source": [
-    "## Continuous Integration"
+    "# Continuous Integration (CI)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {
     "slideshow": {
-     "slide_type": "subslide"
+     "slide_type": "fragment"
     }
    },
    "source": [
-    "### What is CI ?\n",
+    "## What is CI ?\n",
+    "\n",
+    "- Automation of build and tests\n",
     "- Run tests at each commit\n",
+    "- You need to write tests !"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "## Why use CI ?\n",
+    "\n",
     "- Detect bugs when they are introduced\n",
-    "- Detect when fixed bugs appear again (regression)"
+    "- Detect when fixed bugs appear again (regression)\n",
+    "- Publish code that works"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {
     "slideshow": {
-     "slide_type": "subslide"
+     "slide_type": "fragment"
     }
    },
    "source": [
-    "### What else ?\n",
     "Ensure code has a certain quality level\n",
-    "- Linter\n",
+    "- Linters\n",
     "- Test Coverage"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {
     "slideshow": {
      "slide_type": "slide"
     }
    },
    "source": [
+    "# Jenkins on c4science"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "## https://c4science.ch/jobs\n",
+    "![](images/c4s-jenkinsjob.png)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "## https://jenkins.c4science.ch/\n",
+    "![](images/c4s-jenkins.png)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Example\n",
     "## Jenkins base"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 8,
    "metadata": {
     "slideshow": {
      "slide_type": "subslide"
     }
    },
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
+      "Already up to date.\n",
       "Already on 'feature/jenkins-base'\n",
-      "Your branch is up to date with 'origin/feature/jenkins-base'.\n"
+      "Your branch is up to date with 'origin/feature/jenkins-base'.\n",
+      "\u001b[01;34m.\u001b[00m\n",
+      "├── \u001b[01;34mcode\u001b[00m\n",
+      "│   ├── mylib.py\n",
+      "│   └── \u001b[01;32mtest.py\u001b[00m\n",
+      "├── Jenkinsfile\n",
+      "└── README\n",
+      "\n",
+      "1 directory, 4 files\n"
      ]
     }
    ],
    "source": [
-    "git checkout feature/jenkins-base"
+    "git pull\n",
+    "git checkout feature/jenkins-base\n",
+    "tree"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "#!/usr/bin/env python3\n",
+      "\n",
+      "class MyLib():\n",
+      "\n",
+      "    def __init__(self):\n",
+      "        pass\n",
+      "\n",
+      "    def MyFunc(self):\n",
+      "        return 'test'\n",
+      "\n",
+      "if __name__ == '__main__':\n",
+      "    pass\n"
+     ]
+    }
+   ],
+   "source": [
+    "cat code/mylib.py"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "#!/usr/bin/env python3\n",
+      "import unittest, pytest\n",
+      "import mylib\n",
+      "\n",
+      "class Test(unittest.TestCase):\n",
+      "\n",
+      "    def test_return(self):\n",
+      "        m = mylib.MyLib()\n",
+      "        self.assertTrue(m.MyFunc() == 'test')\n",
+      "\n",
+      "if __name__ == '__main__':\n",
+      "    pytest.main(['./test.py'])\n"
+     ]
+    }
+   ],
+   "source": [
+    "cat code/test.py"
    ]
   },
   {
    "cell_type": "code",
    "execution_count": 9,
    "metadata": {
     "slideshow": {
      "slide_type": "subslide"
     }
    },
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
       "pipeline {\n",
       "\n",
       "    agent {\n",
       "        docker {\n",
       "            image 'python:3.7'\n",
       "        }\n",
       "    }\n",
       "\n",
       "    environment {\n",
       "        HOME = \"$WORKSPACE\"\n",
       "    }\n",
       "\n",
       "    stages {\n",
       "        stage('install dependencies') {\n",
       "            steps {\n",
       "                sh 'pip3 install --user pytest'\n",
       "            }\n",
       "        }\n",
       "        stage('run tests') {\n",
       "            steps {\n",
       "                sh '$HOME/.local/bin/pytest code/test.py'\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "\n",
       "}\n"
      ]
     }
    ],
    "source": [
-    "cat ../Jenkinsfile"
+    "cat Jenkinsfile"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "![](images/jenkins-base.png)"
    ]
   }
  ],
  "metadata": {
   "celltoolbar": "Slideshow",
   "kernelspec": {
    "display_name": "Bash",
    "language": "bash",
    "name": "bash"
   },
   "language_info": {
    "codemirror_mode": "shell",
    "file_extension": ".sh",
    "mimetype": "text/x-sh",
    "name": "bash"
   },
   "livereveal": {
    "height": 768,
    "theme": "serif",
    "transition": "none",
    "width": 1024
   }
  },
  "nbformat": 4,
  "nbformat_minor": 2
 }