diff --git a/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb b/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb
index c14da7a638efb598d38ac45ade61e6d36c684ba2..8c23489eb65bbbb8796eb0ac4a75d53b6a1b306e 100644
--- a/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb
+++ b/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb
@@ -16,6 +16,8 @@
    "source": [
     "# Example: Calculate elastic stiffness of a given composite\n",
     "\n",
+    "[Video explaining the theory](https://moodle.rwth-aachen.de/mod/page/view.php?id=551801)\n",
+    "\n",
     "## Task\n",
     "Predict the tensile stiffness of a reinforced concrete cross section shown in the Figure with the thickness of 10~mm and width of 100 mm.\n",
     "The cross-section is reinforced with 6 layers of textile fabrics made of CAR-EP3300 specified in the table below\n",
@@ -124,7 +126,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -139,7 +141,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [
     {
@@ -148,7 +150,7 @@
        "37082.18859138533"
       ]
      },
-     "execution_count": 9,
+     "execution_count": 2,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -193,7 +195,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -209,7 +211,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -231,7 +233,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
@@ -269,7 +271,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
@@ -281,7 +283,7 @@
        "(A_r*E_car*n_l - E_c*(A_r*n_l - d*h))/(d*h)"
       ]
      },
-     "execution_count": 18,
+     "execution_count": 6,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -368,7 +370,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.2"
+   "version": "3.9.1"
   },
   "toc": {
    "base_numbering": 1,
diff --git a/fig/mixture_rule_elastic.png b/fig/mixture_rule_elastic.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1bc273e1ec680eabdffb788193b8ca8ce29ffd3
Binary files /dev/null and b/fig/mixture_rule_elastic.png differ
diff --git a/index.ipynb b/index.ipynb
index ee8554c967e97ff0adacc6186291718c848c55bb..17b8272b0c64213aadc6c1265e70d158ff399059 100644
--- a/index.ipynb
+++ b/index.ipynb
@@ -91,7 +91,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Vehicle used to move forward quickly through BMCS"
+    "## Tools used in the BMCS"
    ]
   },
   {
@@ -122,45 +122,29 @@
     "* Develop a basic understanding of damage, plasticity, fracture\n",
     "* Formulate simplified analytical models capturing material and structural behavior\n",
     "* Compare self-developed analytical models with general finite-element models  \n",
-    "* Distinguish model verification, calibration, validation and parametric studies\n",
-    "* Understand the relation between models and assessment rules for ultimate and service limit states"
+    "* Distinguish model verification, calibration, validation and parametric studies"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Seminar work\n",
+    "## Tour 1\n",
     "\n",
-    "### Topics\n",
-    " - Pull-out and bond\n",
-    " - Crack initiation and propagation\n",
-    " - Multiple cracking and strain-hardening\n",
-    " - Bending\n",
-    " - Compression\n",
-    " \n",
-    "### Models\n",
-    " - [How to set the model parameters](bmcs_course/SeminarWorkHowTo.ipynb)\n",
-    " \n",
-    "### Organization\n",
-    " - Registration procedure\n",
-    " - Submission procedure\n",
-    "\n",
-    "## 1 Interactive WebApps and notebooks\n",
     " - 1.1 A roadmap through the BMCS landscape\n",
     " - 1.2 Introduction to Jupyter Web Apps and notebooks (mathematics and mechanics support)\n",
-    " - 1.3 [Example Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)\n",
-    " \n",
-    "# **A BOND**\n",
-    "\n",
-    "## 2 Constant bond-slip law\n",
+    " - 1.3 [Example Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Tour 2\n",
     "\n",
     "### Material and cross-section\n",
     "\n",
     "- 2.1 [Pull-out of long fiber from rigid matrix](bmcs_course/2_1_PO_LF_LM_RG.ipynb)\n",
-    "\n",
-    "### \n",
-    "\n",
     "- 2.2 [Pull-out of long fiber from long elastic matrix](bmcs_course/2_2_PO_LF_LM_EL.ipynb)\n",
     "- 2.3 [Pull-out of short fiber from rigid matrix](bmcs_course/2_3_PO_SF_M_RG.ipynb)\n",
     "- 2.4 [Crack-bridge behavior]\n",
@@ -168,108 +152,57 @@
     "### Cross section and structure \n",
     "\n",
     "- 2.6 [Anchorage]\n",
-    "- 2.7 [Multiple cracking]\n",
-    "\n",
-    "## 3 Nonlinear bond-slip law\n",
-    "- 3.1 [Pull-out with softening and hardening](bmcs_course/3_1_PO_LF_LM_EL_FE_CB.ipynb) \n",
-    "- 3.2 [EXTRA - Newton iterative scheme](extras/newton_method.ipynb)\n",
-    "- 3.2 [EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb)\n",
-    "\n",
-    "## 4 Unloading, reloading and inelasticity\n",
-    "\n",
-    "- 4.1 [Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb)\n",
-    "- 4.2 [Basic concept of plasticity, ideal and isotropic hardening](bmcs_course/4_2_BS_EP_SH_I_A.ipynb) \n",
-    "- 4.3 [Basic concept of plasticity, kinematic hardening](bmcs_course/4_3_BS_EP_SH_IK_A.ipynb)\n",
-    "- 4.4 [EXTRA - Generalization of the algorithm using vectors](bmcs_course/4_4_BS_EP_SH_IK_N.ipynb) \n",
-    "\n",
-    "## 5 Inelasticity modeled as damage\n",
-    "- 5.1 [Damage initiation, damage evolution, 2D bond behavior](bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb)\n",
-    "- 5.2 [Pull out simulation using damage model](bmcs_course/5_2_PO_DM_FRP_N.ipynb)\n",
-    "\n",
-    "# **B CRACK**\n",
-    "\n",
-    "## 6 Energy dissipation\n",
-    "\n",
-    "## 7 Crack propagation\n",
-    "\n",
-    "## 8 Cross section description\n",
-    "\n",
-    "# **C BEAM**\n",
-    "\n",
-    "## 9 Multiple cracking \n",
-    "\n",
-    "## 10 Bending \n"
+    "- 2.7 [Multiple cracking]"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# **D DELIVERABLES**"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## 11 Seminar work"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## 12 Summary od exam questions and tasks"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Structural levels and the model components\n",
-    "Stress redistribution processes - how do they affect the design principles?\n",
-    " - ultimate limit state\n",
-    " - serviceability limit state\n",
-    " \n",
-    " Minimialstic assumptions - nonlinear - multilinear stress-strain response of concrete, bond and brittle matrix "
+    "## Tour 3\n",
+    "- 3.1 [Pull-out with softening and hardening](bmcs_course/3_1_PO_LF_LM_EL_FE_CB.ipynb) \n",
+    "- 3.2 [EXTRA - Newton iterative scheme](extras/newton_method.ipynb)\n",
+    "- 3.2 [EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# Types of material behavior "
+    "## Tour 4\n",
+    "\n",
+    "- 4.1 [Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb)\n",
+    "- 4.2 [Basic concept of plasticity, ideal and isotropic hardening](bmcs_course/4_2_BS_EP_SH_I_A.ipynb) \n",
+    "- 4.3 [Basic concept of plasticity, kinematic hardening](bmcs_course/4_3_BS_EP_SH_IK_A.ipynb)\n",
+    "- 4.4 [EXTRA - Generalization of the algorithm using vectors](bmcs_course/4_4_BS_EP_SH_IK_N.ipynb) "
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    " - nonlinearity hardening / softening\n",
-    " - damage / plasticity\n",
-    " - energy dissipation / fracture energy"
+    "## Tour 5\n",
+    "- 5.1 [Damage initiation, damage evolution, 2D bond behavior](bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb)\n",
+    "- 5.2 [Pull out simulation using damage model](bmcs_course/5_2_PO_DM_FRP_N.ipynb)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# Unloading"
+    "## Tour 6\n",
+    "\n",
+    "- 6.1 Crack propagation"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# Stable crack growth"
+    "## Tour 7\n",
+    "\n",
+    "- 7.1 Beam bending "
    ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
   }
  ],
  "metadata": {
diff --git a/pull_out/2_1_PO_ELF_RLM.ipynb b/pull_out/2_1_PO_ELF_RLM.ipynb
index de4f693053b1f69357a914665bdf7f343b66b495..4056fae6c096a971103414eaa840e24dbc38a950 100644
--- a/pull_out/2_1_PO_ELF_RLM.ipynb
+++ b/pull_out/2_1_PO_ELF_RLM.ipynb
@@ -11,7 +11,7 @@
     "# Example 2.1: PO_ELF_RLM\n",
     "Pull-out of a elastic long fiber (ELF) from rigid long matrix (RLG)\n",
     "\n",
-    "@author: rosoba"
+    "[Video - pullout with constant bond](add link)"
    ]
   },
   {
@@ -28,11 +28,44 @@
     }
    },
    "source": [
-    "## Observation\n",
+    "# Observation\n",
     "Let us try to utilize the depicted idealization for the derivation of a model that can help us simulate the test results of the RILEM pull-out test\n",
     "![image.png](attachment:image.png)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# A look inside the specimen using the model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "739e439c419248a9b26e666d690ab008",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "VBox(children=(HBox(children=(VBox(children=(Tree(layout=Layout(align_items='stretch', border='solid 1px black…"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "from pull_out import PullOutAModel, PO_ELF_RLM_Symb\n",
+    "po = PullOutAModel(symb_class=PO_ELF_RLM_Symb)\n",
+    "po.interact()"
+   ]
+  },
   {
    "attachments": {
     "image.png": {
@@ -268,8 +301,7 @@
     "import sympy as sp # symbolic algebra package\n",
     "import numpy as np # numerical package\n",
     "import matplotlib.pyplot as plt # plotting package\n",
-    "sp.init_printing() # enable nice formating of the derived expressions\n",
-    "import ipywidgets as ipw"
+    "sp.init_printing() # enable nice formating of the derived expressions"
    ]
   },
   {
@@ -1172,7 +1204,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 23,
    "metadata": {
     "slideshow": {
      "slide_type": "slide"
@@ -1209,6 +1241,7 @@
     }
    ],
    "source": [
+    "import ipywidgets as ipw\n",
     "u_fa_x_range = get_u_fa_x(x_range, 1)\n",
     "fig, (ax_u2) = plt.subplots(1,1, figsize=(6,3), tight_layout=True)\n",
     "line_u2, = ax_u2.plot(x_range, u_fa_x_range, color='black');\n",
@@ -1235,7 +1268,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 24,
    "metadata": {
     "slideshow": {
      "slide_type": "fragment"
@@ -1255,7 +1288,7 @@
        "⎩                          0                                 otherwise      "
       ]
      },
-     "execution_count": 21,
+     "execution_count": 24,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -1281,7 +1314,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 25,
    "metadata": {
     "slideshow": {
      "slide_type": "fragment"
@@ -1307,7 +1340,7 @@
        "erwise      ⎠"
       ]
      },
-     "execution_count": 22,
+     "execution_count": 25,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -1941,6 +1974,27 @@
    "outputs": [],
    "source": []
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
   {
    "cell_type": "code",
    "execution_count": null,
diff --git a/pull_out/2_2_PO_ELF_ELM.ipynb b/pull_out/2_2_PO_ELF_ELM.ipynb
index 1251f71c4ca15de7c32f2a623edfdf6428e4be63..392e2ab742dfd384660c03f9e96301bdbc78c767 100644
--- a/pull_out/2_2_PO_ELF_ELM.ipynb
+++ b/pull_out/2_2_PO_ELF_ELM.ipynb
@@ -8,7 +8,36 @@
     }
    },
    "source": [
-    "# Example 2.2: Pull-out from elastic matrix - PO-ELF-ELM\n"
+    "# Example 2.2: Pull-out from elastic matrix - PO-ELF-ELM\n",
+    "\n",
+    "Video - show the difference to rigid matrix"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "e6695fb210cf4547ae016ab544c75a04",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "VBox(children=(HBox(children=(VBox(children=(Tree(layout=Layout(align_items='stretch', border='solid 1px black…"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "%matplotlib widget\n",
+    "from pull_out import PullOutAModel, PO_ELF_ELM_Symb\n",
+    "po = PullOutAModel(symb_class=PO_ELF_ELM_Symb)\n",
+    "po.interact()"
    ]
   },
   {
@@ -198,7 +227,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 4,
    "metadata": {
     "slideshow": {
      "slide_type": "fragment"
@@ -226,7 +255,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 5,
    "metadata": {
     "slideshow": {
      "slide_type": "fragment"
diff --git a/pull_out/2_3_PO_ESF_RM.ipynb b/pull_out/2_3_PO_ESF_RM.ipynb
index a1bc548e6f914ffdbe2f32203502ec65879aee43..68c4a1e524354a36223d67a832304ecb3dd21be5 100644
--- a/pull_out/2_3_PO_ESF_RM.ipynb
+++ b/pull_out/2_3_PO_ESF_RM.ipynb
@@ -9,9 +9,34 @@
    },
    "source": [
     "# Example 2.3: PO-ESF-RSM\n",
-    "Pull-out of a short fiber from short matrix \n",
-    "\n",
-    "@author: rosoba"
+    "Pull-out of a short fiber from short matrix "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "ca3da96b6fe144d79d69b0c1be56b25c",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "VBox(children=(HBox(children=(VBox(children=(Tree(layout=Layout(align_items='stretch', border='solid 1px black…"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "%matplotlib widget\n",
+    "from pull_out import PullOutAModel, PO_ESF_RLM_Symb\n",
+    "po = PullOutAModel(symb_class=PO_ESF_RLM_Symb)\n",
+    "po.interact()"
    ]
   },
   {