diff --git a/fig/fiber_bundle.odg b/fig/fiber_bundle.odg
new file mode 100644
index 0000000000000000000000000000000000000000..1ad6648746014b7b1dc31abcfe319b4047e802a1
Binary files /dev/null and b/fig/fiber_bundle.odg differ
diff --git a/fig/fiber_bundle.png b/fig/fiber_bundle.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b941d621e9dc89c20768c5ec489065c393e1fe2
Binary files /dev/null and b/fig/fiber_bundle.png differ
diff --git a/fig/fiber_bundle_carbon_tensile_test.png b/fig/fiber_bundle_carbon_tensile_test.png
new file mode 100644
index 0000000000000000000000000000000000000000..35ad41bfdbd00067fbabfd8dc19d0e4686e0efb0
Binary files /dev/null and b/fig/fiber_bundle_carbon_tensile_test.png differ
diff --git a/fig/interface_2d.odg b/fig/interface_2d.odg
new file mode 100644
index 0000000000000000000000000000000000000000..c4f5c4a56b559b44fbe5464e2864b04aa7bcbe30
Binary files /dev/null and b/fig/interface_2d.odg differ
diff --git a/fig/interface_2d.png b/fig/interface_2d.png
new file mode 100644
index 0000000000000000000000000000000000000000..766cf7d1a7158a3780331d456e8d4e4cc4853f03
Binary files /dev/null and b/fig/interface_2d.png differ
diff --git a/fig/yarn3d.png b/fig/yarn3d.png
new file mode 100644
index 0000000000000000000000000000000000000000..490f053127d6aa3638813209b97c44d0e5a81570
Binary files /dev/null and b/fig/yarn3d.png differ
diff --git a/icons/classify.png b/icons/classify.png
new file mode 100644
index 0000000000000000000000000000000000000000..3acc67305454450d5285791440ab60a9bc6b315f
Binary files /dev/null and b/icons/classify.png differ
diff --git a/icons/recall.png b/icons/recall.png
new file mode 100644
index 0000000000000000000000000000000000000000..45b25c9c8e74242f9f4f2c17ea296032f8570366
Binary files /dev/null and b/icons/recall.png differ
diff --git a/papers/yarn_tensile_test_example.pdf b/papers/yarn_tensile_test_example.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..63d0d6c0e3d8cf8c61ed13c27945fd754e62946c
Binary files /dev/null and b/papers/yarn_tensile_test_example.pdf differ
diff --git a/tour5_damage_bond/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb b/tour5_damage_bond/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb
index 245ee73955978205d9fbd268b96c5378f0b3e64b..b2aa26b0527639de19d452aec53b672b80d07c8d 100644
--- a/tour5_damage_bond/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb
+++ b/tour5_damage_bond/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb
@@ -351,7 +351,7 @@
        "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: \\kappa < \\kappa_{0} \\\\\\frac{\\kappa - \\kappa_{0}}{- \\kappa_{0} + \\kappa_{u}} & \\text{for}\\: \\kappa < \\kappa_{u} \\\\1 & \\text{otherwise} \\end{cases}$"
       ],
       "text/plain": [
-       "<ibvpy.tmodel.mats_damage_fn.LinearDamageFn at 0x7f12a369f9a0>"
+       "<ibvpy.tmodel.mats_damage_fn.LinearDamageFn at 0x7f96c54ef3b0>"
       ]
      },
      "execution_count": 2,
@@ -380,7 +380,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "54f0a10b76d94688aa571d5377508175",
+       "model_id": "2eac6f2077a64c3db67ded9b2c64bc3a",
        "version_major": 2,
        "version_minor": 0
       },
@@ -413,7 +413,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "5191002c96d148b8ab0549351c1f7cd8",
+       "model_id": "01a1d15c567d4ab18053e962347842e0",
        "version_major": 2,
        "version_minor": 0
       },
@@ -527,7 +527,7 @@
        "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: \\kappa < 0 \\\\1 - e^{- \\left(\\frac{\\kappa}{\\lambda}\\right)^{m}} & \\text{otherwise} \\end{cases}$"
       ],
       "text/plain": [
-       "<ibvpy.tmodel.mats_damage_fn.WeibullDamageFn at 0x7f1273d89720>"
+       "<ibvpy.tmodel.mats_damage_fn.WeibullDamageFn at 0x7f9704ac8090>"
       ]
      },
      "execution_count": 5,
@@ -557,7 +557,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "f064d9a091d94f44b0e3317808efcb13",
+       "model_id": "72f78ca99ab840138611c77be14ce567",
        "version_major": 2,
        "version_minor": 0
       },
@@ -588,7 +588,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "c5c51d30516c42948cd852ca88be782a",
+       "model_id": "20784fa178a749f4a78c648da54cefdb",
        "version_major": 2,
        "version_minor": 0
       },
@@ -708,7 +708,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "d65e165dcd9b4ec89b91493ebec61ca6",
+       "model_id": "f35c091da8ed497da6aa6862304092ff",
        "version_major": 2,
        "version_minor": 0
       },
@@ -770,7 +770,7 @@
        "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: \\kappa \\leq \\kappa_{0} \\\\1 - \\frac{\\kappa_{0} e^{\\frac{- \\kappa + \\kappa_{0}}{- \\kappa_{0} + kappa_\\mathrm{f}}}}{\\kappa} & \\text{otherwise} \\end{cases}$"
       ],
       "text/plain": [
-       "<ibvpy.tmodel.mats_damage_fn.ExpSlopeDamageFn at 0x7f1273a974f0>"
+       "<ibvpy.tmodel.mats_damage_fn.ExpSlopeDamageFn at 0x7f96c4ebfd60>"
       ]
      },
      "execution_count": 10,
@@ -792,7 +792,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "0340ecfab8164da5a65300a4c1d318a1",
+       "model_id": "dfc77cdf54394ed1925eeeb230188bbc",
        "version_major": 2,
        "version_minor": 0
       },
@@ -862,7 +862,7 @@
        "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: \\kappa \\leq \\kappa_{0} \\\\1 - \\begin{cases} 1 & \\text{for}\\: \\kappa < \\kappa_{0} \\\\\\frac{\\kappa_{0} \\left(1 - \\frac{1 - e^{- \\frac{\\alpha \\left(\\kappa - \\kappa_{0}\\right)}{- \\kappa_{0} + \\kappa_{u}}}}{1 - e^{- \\alpha}}\\right)}{\\kappa} & \\text{for}\\: \\kappa < \\kappa_{u} \\\\0 & \\text{otherwise} \\end{cases} & \\text{otherwise} \\end{cases}$"
       ],
       "text/plain": [
-       "<ibvpy.tmodel.mats_damage_fn.AbaqusDamageFn at 0x7f1273974a90>"
+       "<ibvpy.tmodel.mats_damage_fn.AbaqusDamageFn at 0x7f96c4d6cf90>"
       ]
      },
      "execution_count": 12,
@@ -884,7 +884,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "0182a2cffd3d4b96b3c9cd1b8b5ca134",
+       "model_id": "9050d860a09742b6b4b65cc22312c393",
        "version_major": 2,
        "version_minor": 0
       },
@@ -936,7 +936,7 @@
        "$\\displaystyle 1 - \\begin{cases} 1 & \\text{for}\\: \\kappa < \\kappa_{0} \\\\e^{\\frac{\\left(\\kappa - \\kappa_{0}\\right) \\left(\\sqrt{E_{b}} \\sqrt{- E_{b} \\kappa_{0}^{2} + 4 G_{f}} + E_{b} \\kappa_{0}\\right)}{E_{b} \\kappa_{0}^{2} - 2 G_{f}}} & \\text{otherwise} \\end{cases}$"
       ],
       "text/plain": [
-       "<ibvpy.tmodel.mats_damage_fn.GfDamageFn at 0x7f1273c52590>"
+       "<ibvpy.tmodel.mats_damage_fn.GfDamageFn at 0x7f96c4be54f0>"
       ]
      },
      "execution_count": 14,
@@ -965,7 +965,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "8d5c19fa779942f6b5ce937f8e643b4d",
+       "model_id": "d7ca49638d8e423184e52f60c5953a14",
        "version_major": 2,
        "version_minor": 0
       },
@@ -1124,7 +1124,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "4b71cc4879bf493f8f05769bf163f50b",
+       "model_id": "17d69b2b3c8e44f89cdfad12772fb249",
        "version_major": 2,
        "version_minor": 0
       },
@@ -1203,71 +1203,33 @@
     "\\end{align}\n",
     "\n",
     "> **<font color=\"brown\"> Damage increment caused in direction $x$ directly affects the behavior in direction $y$**\n",
-    "             </font>\n",
-    "\n",
-    "Let us inspect the damage evolution for 2D loading histories in the space $\\left[s_x, s_y, \\sqrt{\\tau_x^2 + \\tau_y^2}\\right]$"
+    "             </font>"
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": 19,
-   "metadata": {
-    "hide_input": false,
-    "slideshow": {
-     "slide_type": "skip"
-    }
-   },
-   "outputs": [],
+   "cell_type": "markdown",
+   "metadata": {},
    "source": [
-    "import damage2d_explorer as de"
+    "<div style=\"background-color:lightgray;text-align:left\"> <img src=\"../icons/view.png\" alt=\"Previous trip\" width=\"50\" height=\"50\">\n",
+    "    &nbsp; &nbsp; <b>Let see how does the isotropic damage evolves in a single point</b> </div> \n",
+    "    \n",
+    "To visualize the response of a material point with two control slip  vector components $s_x, s_y$ and two stress vector components $\\tau_x, \\tau_y$ in a 3D diagram, we will plot the loading histories in the space $\\left[s_x, s_y, \\sqrt{\\tau_x^2 + \\tau_y^2}\\right]$. The vertical axis represents the norm of the stress vector. We will make use of an interactive model component `damage_2d_explorer`."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 18,
    "metadata": {
     "hide_input": false,
     "slideshow": {
-     "slide_type": "slide"
+     "slide_type": "skip"
     }
    },
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "86742b1b44f04ec693d236a19e49fbc3",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "fig = plt.figure(figsize=(10,5), tight_layout=True)\n",
-    "fig.canvas.header_visible = False\n",
-    "fig.suptitle(r'Damage functions with softening controlled by $g_3( G_\\mathrm{f} )$')\n",
-    "ax = fig.add_subplot(1, 1, 1, projection='3d')\n",
-    "bs = MATS1D5BondSlipD(omega_fn='fracture-energy', s_max=0.05)\n",
-    "bs.omega_fn_.trait_set(kappa_0=0.004, G_f=10)\n",
-    "de.plot_tau_s(ax, [0,0,0.03], 0.08, 500, bs)\n",
-    "de.plot_tau_s(ax, [0,0,0.04], 0.08, 500, bs)\n",
-    "de.plot_tau_s(ax, [0,0,0.05], 0.08, 500, bs) "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 21,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "ce3b8331542648679e052ca8db49f913",
+       "model_id": "7c1960203b024f5c8871866dd557d4b7",
        "version_major": 2,
        "version_minor": 0
       },
@@ -1280,6 +1242,8 @@
     }
    ],
    "source": [
+    "import damage2d_explorer as de\n",
+    "bs = MATS1D5BondSlipD(omega_fn='fracture-energy', s_max=0.05)\n",
     "explore = de.Explore(bs=bs)\n",
     "explore.interact()"
    ]
@@ -1311,7 +1275,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 19,
    "metadata": {
     "slideshow": {
      "slide_type": "fragment"
diff --git a/tour5_damage_bond/damage2d_explorer.py b/tour5_damage_bond/damage2d_explorer.py
index e233a3979233fcdd55517bdbeaaca5c258694df1..7066c0de46a9cb6cbb4bbc49dad20327a5f51884 100644
--- a/tour5_damage_bond/damage2d_explorer.py
+++ b/tour5_damage_bond/damage2d_explorer.py
@@ -24,9 +24,9 @@ def get_tau_s(s_x_n1, s_y_n1, Eps_n, bs, **kw):
         np.array([tau_x_n1, tau_y_n1, omega_n1])
     )
 
-def plot_tau_s(ax, Eps_n, s_max, n_s, bs, **kw):
+def plot_tau_s(ax, Eps_n, s_min, s_max, n_s, bs, **kw):
     n_s_i = complex(0,n_s)
-    s_x_n1, s_y_n1 = np.mgrid[-s_max:s_max:n_s_i, -s_max:s_max:n_s_i]
+    s_x_n1, s_y_n1 = np.mgrid[s_min:s_max:n_s_i, s_min:s_max:n_s_i]
     Eps_n1, Sig_n1 = get_tau_s(s_x_n1, s_y_n1, Eps_n, bs, **kw)
     s_x_n1, s_y_n1, _ = Eps_n1
     tau_x_n1, tau_y_n1, _ = Sig_n1
@@ -47,7 +47,7 @@ def plot_tau_s(ax, Eps_n, s_max, n_s, bs, **kw):
 
 
 class Explore(bu.Model):
-
+    name = 'Damage model explorer'
     bs = bu.Instance(MATS1D5BondSlipD, ())
 
     tree = ['bs']
@@ -97,16 +97,18 @@ class Explore(bu.Model):
         Sig_arr = np.array(self.Sig_record, dtype=np.float_)
         Eps_arr = np.array(self.Eps_record, dtype=np.float_)
         plot_tau_s(ax, Eps_arr[-1, ...],
-                   self.s_max, 500, self.bs)
+                   self.s_min, self.s_max, 500, self.bs)
         self.plot_Sig_Eps(ax, Sig_arr)
         ax.plot(self.s_x_t, self.s_y_t, 0, color='red')
 
-    s_max = bu.Float(4, BC=True)
     n_s = bu.Int(500, BC=True)
     s_x_1 = bu.Float(0, BC=True)
     s_y_1 = bu.Float(0, BC=True)
     n_steps = bu.Float(20, BC=True)
 
+    s_min = bu.Float(-0.1, BC=True)
+    s_max = bu.Float(0.1, BC=True)
+
     def run(self, update_progress=lambda t: t):
         try:
             self.get_response_i(update_progress)
@@ -123,14 +125,8 @@ class Explore(bu.Model):
     ipw_view = bu.View(
         bu.Item('s_max'),
         bu.Item('n_s'),
-        bu.Item('s_x_1', editor=bu.FloatRangeEditor(low=-5,high=5)),
-        bu.Item('s_y_1', editor=bu.FloatRangeEditor(low=-5,high=5)),
+        bu.Item('s_x_1', editor=bu.FloatRangeEditor(low_name='s_min',high_name='s_max')),
+        bu.Item('s_y_1', editor=bu.FloatRangeEditor(low_name='s_min',high_name='s_max')),
         bu.Item('n_steps'),
-        time_editor=bu.ProgressEditor(run_method='run',
-                                      reset_method='reset',
-                                      interrupt_var='sim_stop',
-                                      time_var='t',
-                                      time_max='t_max',
-                                      )
     )