diff --git a/bending/bending_3pt.ipynb b/bending/bending_3pt.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..ca2150beb98efe7d9e10f1d0b006e57d30ebcb64
--- /dev/null
+++ b/bending/bending_3pt.ipynb
@@ -0,0 +1,118 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "adolescent-tunnel",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%matplotlib widget"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "severe-polls",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from bmcs_cross_section.mkappa.mkappa import MKappa\n",
+    "from bmcs_cross_section.cs_design import TShape, BarLayer, CrossSectionDesign\n",
+    "from bmcs_cross_section.matmod import PWLConcreteMatMod, EC2ConcreteMatMod\n",
+    "import numpy as np\n",
+    "from bmcs_beam.bending.deflection_profile import DeflectionProfile\n",
+    "import sympy as sp\n",
+    "sp.init_printing()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "chinese-fraud",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mc = MKappa(name='moment-curvature', low_kappa=-0.000014, high_kappa=0.00003)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "geological-fusion",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mc.matrix = 'piecewise linear'\n",
+    "css = mc.cross_section_shape = 'T-shape'\n",
+    "csl = mc.cross_section_layout\n",
+    "bl1 = BarLayer(name='steel 1', z=10, ds=10, count=2 )\n",
+    "bl2 = BarLayer(name='steel 2', z=30, ds=10, count=2 )\n",
+    "csl.add_layer(bl1)\n",
+    "csl.add_layer(bl2)\n",
+    "dp = DeflectionProfile(mc=mc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "positive-accordance",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "M - k recalculated\n"
+     ]
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "1bbdb5203aa345509083c4e798d60a6e",
+       "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": [
+    "dp.interact()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "final-tragedy",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "base",
+   "language": "python",
+   "name": "base"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/mkappa/mkappa.ipynb b/mkappa/mkappa.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..c74cd321547d4cb1f18e5c79d33fb25ce1b14864
--- /dev/null
+++ b/mkappa/mkappa.ipynb
@@ -0,0 +1,118 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "stock-regard",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%matplotlib widget"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "dietary-software",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from bmcs_cross_section.mkappa.mkappa import MKappa\n",
+    "from bmcs_cross_section.cs_design import TShape, BarLayer, CrossSectionDesign\n",
+    "from bmcs_cross_section.matmod import PWLConcreteMatMod, EC2ConcreteMatMod\n",
+    "import numpy as np\n",
+    "import sympy as sp\n",
+    "sp.init_printing()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "chief-shield",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mc = MKappa(name='moment-curvature', low_kappa=-0.000014, high_kappa=0.00003)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "defensive-bidder",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mc.matrix = 'piecewise linear'\n",
+    "css = mc.cross_section_shape = 'T-shape'\n",
+    "csl = mc.cross_section_layout\n",
+    "bl1 = BarLayer(name='steel 1', z=10, ds=10, count=2 )\n",
+    "bl2 = BarLayer(name='steel 2', z=30, ds=10, count=2 )\n",
+    "csl.add_layer(bl1)\n",
+    "csl.add_layer(bl2)\n",
+    "#csl.update_observers()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "hairy-armor",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "eta 0.3204545454545455\n",
+      "M - k recalculated\n"
+     ]
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "b8f6a77fe3384b15bf9011963897c241",
+       "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": [
+    "mc.interact()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "particular-healing",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "bmcs_env",
+   "language": "python",
+   "name": "bmcs_env"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/pull_out/pull_out.ipynb b/pull_out/pull_out.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..b869dffdbc7a3b50476d1ed552a848b9ff4e2e5a
--- /dev/null
+++ b/pull_out/pull_out.ipynb
@@ -0,0 +1,54 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "recognized-integer",
+   "metadata": {},
+   "source": [
+    "# Pull-out, Push-in"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "moral-nerve",
+   "metadata": {},
+   "source": [
+    "## Constant bond-slip law\n",
+    "\n",
+    "- [J0201 - Pull-out of long fiber from rigid matrix](2_1_PO_LF_LM_RG.ipynb)\n",
+    "- [J0202 - Pull-out of long fiber from long elastic matrix](2_2_PO_LF_LM_EL.ipynb)\n",
+    "- [J0203 - Pull-out of short fiber from rigid matrix](2_3_PO_SF_M_RG.ipynb)\n",
+    "- [J0204 - Comparison of several models](2_4_PO_comparison.ipynb)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "constant-injection",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "base",
+   "language": "python",
+   "name": "base"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/tension/fragmentation.ipynb b/tension/fragmentation.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..220c0bf986c2059674da0d77e53f66c83101a655
--- /dev/null
+++ b/tension/fragmentation.ipynb
@@ -0,0 +1,79 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "casual-rotation",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%matplotlib widget\n",
+    "from pmcm.api import PMCM"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "stylish-curtis",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "pmcm = PMCM()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "raising-cinema",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "14a66af4d1a642409783059e098d9dd0",
+       "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": [
+    "pmcm.interact()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "committed-distance",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "bmcs_env",
+   "language": "python",
+   "name": "bmcs_env"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}