Repository: PyEllips/pyElli (language: python)

Issue:
Move dispersion models in a single file each
Each dispersion should reside in a single file and eventually it should be allowed to load the models dynamically in some sort of plugin fashion.


Discussion / hints:

Fix patch:
diff --git a/docs/dispersions.rst b/docs/dispersions.rst
index 9ef2ecd8..c07509d2 100644
--- a/docs/dispersions.rst
+++ b/docs/dispersions.rst
@@ -2,20 +2,61 @@
 Dispersions
 ===========
 
-.. automodule:: elli.dispersions.dispersions
+The dispersions are the central part of pyElli and the transfer-matrix method.
+They describe the change of dielectric function or refractive index with the wavelength.
+In pyElli the default wavelength unit is nm.
+Each dispersion has two distinct sets of parameters:
+
+    * Parameters which can be given only once (single parameters).
+    * Parameters which can be given in multiple sets (repeated parameters),
+      e.g. a set of oscillator parameters.
+
+The syntax for each of the parameter sets is different.
+For the single parameters they are given in the class constructor:
+
+    .. highlight:: python
+    .. code-block:: python
+
+        Cauchy(n0=1.458, n1=3.54e-3, n2=0, k0=0, k1=0, k2=0)
+
+Repeated parameters are added via the add() function:
+
+    .. highlight:: python
+    .. code-block:: python
+
+        Sellmeier().add(A=1, B=1).add(A=1, B=2)
+
+For dispersions having both, single and repeated parameters can be used together:
+
+    .. highlight:: python
+    .. code-block:: python
+
+        TaucLorentz(Eg=2).add(A=10, E=2.5, C=0.1)
+
+If parameters are not fully provided, they are set to their respective default values.
+The available parameters and their respective default values
+are given in the respective class documentation.
+
+All classes inherit from the abstract base class `Dispersion`_.
+It provides basic functionality, such as returning dataframes or arrays
+containing the wavelength dependent dielectric function of the
+dispersion relation at current parameter set.
+
+Dispersions can be added with the `+` operator, or if you want to chain
+more than two dispersions together you may have a look at the `DispersionSum`_ class.
 
 
 Constant Refractive Index
 =========================
-.. autoclass:: elli.dispersions.dispersions.ConstantRefractiveIndex
+.. autoclass:: elli.dispersions.ConstantRefractiveIndex
 
 Epsilon Infinity
 ================
-.. autoclass:: elli.dispersions.dispersions.EpsilonInf
+.. autoclass:: elli.dispersions.EpsilonInf
 
 Cauchy
 ======
-.. autoclass:: elli.dispersions.dispersions.Cauchy
+.. autoclass:: elli.dispersions.Cauchy
 
 .. plotly::
 
@@ -28,7 +69,7 @@ Cauchy
 
 Sellmeier
 =========
-.. autoclass:: elli.dispersions.dispersions.Sellmeier
+.. autoclass:: elli.dispersions.Sellmeier
 
 .. plotly::
 
@@ -43,7 +84,7 @@ Drude
 
 Energy parameters
 -----------------
-.. autoclass:: elli.dispersions.dispersions.DrudeEnergy
+.. autoclass:: elli.dispersions.DrudeEnergy
 
 .. plotly::
 
@@ -54,7 +95,7 @@ Energy parameters
 
 Resistivity parameters
 ----------------------
-.. autoclass:: elli.dispersions.dispersions.DrudeResistivity
+.. autoclass:: elli.dispersions.DrudeResistivity
 
 .. plotly::
 
@@ -68,7 +109,7 @@ Lorentz
 
 Wavelength parameters
 ---------------------
-.. autoclass:: elli.dispersions.dispersions.LorentzLambda
+.. autoclass:: elli.dispersions.LorentzLambda
 
 .. plotly::
 
@@ -80,7 +121,7 @@ Wavelength parameters
 
 Energy parameters
 -----------------
-.. autoclass:: elli.dispersions.dispersions.LorentzEnergy
+.. autoclass:: elli.dispersions.LorentzEnergy
 
 .. plotly::
 
@@ -91,7 +132,7 @@ Energy parameters
 
 Tauc-Lorentz
 ============
-.. autoclass:: elli.dispersions.dispersions.TaucLorentz
+.. autoclass:: elli.dispersions.TaucLorentz
 
 .. plotly::
 
@@ -103,7 +144,7 @@ Tauc-Lorentz
 
 Gaussian
 ========
-.. autoclass:: elli.dispersions.dispersions.Gaussian
+.. autoclass:: elli.dispersions.Gaussian
 
 .. plotly::
 
@@ -114,7 +155,7 @@ Gaussian
 
 Tanguy
 ======
-.. autoclass:: elli.dispersions.dispersions.Tanguy
+.. autoclass:: elli.dispersions.Tanguy
 
 .. plotly::
 
@@ -125,7 +166,7 @@ Tanguy
 
 Poles
 =====
-.. autoclass:: elli.dispersions.dispersions.Poles
+.. autoclass:: elli.dispersions.Poles
 
 .. plotly::
 
@@ -140,13 +181,17 @@ Tabulated values
 
 Refractive index values
 -----------------------
-.. autoclass:: elli.dispersions.dispersions.Table
+.. autoclass:: elli.dispersions.Table
 
 Epsilon values
 --------------
-.. autoclass:: elli.dispersions.dispersions.TableEpsilon
+.. autoclass:: elli.dispersions.TableEpsilon
    :members:
 
+Spectraray tables
+-----------------
+.. autoclass:: elli.dispersions.TableSpectraRay
+   :members:
 
 Abstract classes
 ================
diff --git a/docs/modules.rst b/docs/modules.rst
index a22d739c..cd99ede1 100644
--- a/docs/modules.rst
+++ b/docs/modules.rst
@@ -15,5 +15,4 @@ API Reference
    result
    plot
    read_write
-   spectraray
    helpers
diff --git a/docs/read_write.rst b/docs/read_write.rst
index c3cf37b3..baa9c46e 100644
--- a/docs/read_write.rst
+++ b/docs/read_write.rst
@@ -1,5 +1,8 @@
 Reading and writing
 ===================
 
-.. automodule:: elli.nexus
+.. automodule:: elli.importer.nexus
+    :members:
+
+.. automodule:: elli.importer.spectraray
     :members:
diff --git a/docs/spectraray.rst b/docs/spectraray.rst
deleted file mode 100644
index c2ff7748..00000000
--- a/docs/spectraray.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-=================================
-SpectraRay Import/Export helpers
-=================================
-
-.. automodule:: elli.spectraray
-    :members:
-    :undoc-members:
diff --git a/examples/Basic Usage/Basic Usage.ipynb b/examples/Basic Usage/Basic Usage.ipynb
index 77c9ecf1..3e30e0b2 100644
--- a/examples/Basic Usage/Basic Usage.ipynb
+++ b/examples/Basic Usage/Basic Usage.ipynb
@@ -26,7 +26,7 @@
       },
       "outputs": [],
       "source": [
-        "import elli\nfrom elli.fitting import ParamsHist, fit\nfrom elli.nexus import read_psi_delta\n\n# sphinx_gallery_thumbnail_path = '_static/basic_usage.png'"
+        "import elli\nfrom elli.fitting import ParamsHist, fit\n\n# sphinx_gallery_thumbnail_path = '_static/basic_usage.png'"
       ]
     },
     {
@@ -44,7 +44,7 @@
       },
       "outputs": [],
       "source": [
-        "ANGLE = 70\npsi_delta = read_psi_delta(\"SiO2onSi.ellips.nxs\").loc[ANGLE].loc[210:800]"
+        "ANGLE = 70\npsi_delta = elli.read_nexus_psi_delta(\"SiO2onSi.ellips.nxs\").loc[ANGLE].loc[210:800]"
       ]
     },
     {
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "@fit(psi_delta, params)\ndef model(lbda, params):\n    # Load the literature values for Si\n    sr = elli.SpectraRay(\"./\")\n    Si = elli.IsotropicMaterial(sr.loadDispersionTable(\"Si_Aspnes.mat\"))\n\n    # Generate the cauchy model from the current lmfit parameters\n    SiO2 = elli.Cauchy(\n        params[\"SiO2_n0\"],\n        params[\"SiO2_n1\"],\n        params[\"SiO2_n2\"],\n        params[\"SiO2_k0\"],\n        params[\"SiO2_k1\"],\n        params[\"SiO2_k2\"],\n    ).get_mat()\n    # get_mat() generates an IsotropicMaterial from the dispersion relation\n\n    # Construct the layers you expect in your sample\n    # Here, it only consists of one layer SiO2 in between air and Si.\n    # We build the structure coming from air, through the layers,\n    # represented as an array, and having Si as bulk material.\n    structure = elli.Structure(\n        elli.AIR,  # Input medium\n        [elli.Layer(SiO2, params[\"SiO2_d\"])],  # Overlayer structure\n        Si,\n    )  # Output medium / Substrate\n\n    # The model should return the evaluation of the structure at the experimental wavelengths lbda,\n    # the experimental angle ANGLE and it should define a solver to calculate the transfer matrix.\n    return structure.evaluate(lbda, ANGLE, solver=elli.Solver2x2)"
+        "@fit(psi_delta, params)\ndef model(lbda, params):\n    # Load the literature values for Si\n    sr = elli.TableSpectraRay(\"./\")\n    Si = elli.IsotropicMaterial(sr.load_dispersion_table(\"Si_Aspnes.mat\"))\n\n    # Generate the cauchy model from the current lmfit parameters\n    SiO2 = elli.Cauchy(\n        params[\"SiO2_n0\"],\n        params[\"SiO2_n1\"],\n        params[\"SiO2_n2\"],\n        params[\"SiO2_k0\"],\n        params[\"SiO2_k1\"],\n        params[\"SiO2_k2\"],\n    ).get_mat()\n    # get_mat() generates an IsotropicMaterial from the dispersion relation\n\n    # Construct the layers you expect in your sample\n    # Here, it only consists of one layer SiO2 in between air and Si.\n    # We build the structure coming from air, through the layers,\n    # represented as an array, and having Si as bulk material.\n    structure = elli.Structure(\n        elli.AIR,  # Input medium\n        [elli.Layer(SiO2, params[\"SiO2_d\"])],  # Overlayer structure\n        Si,\n    )  # Output medium / Substrate\n\n    # The model should return the evaluation of the structure at the experimental wavelengths lbda,\n    # the experimental angle ANGLE and it should define a solver to calculate the transfer matrix.\n    return structure.evaluate(lbda, ANGLE, solver=elli.Solver2x2)"
       ]
     },
     {
@@ -251,7 +251,7 @@
       "name": "python",
       "nbconvert_exporter": "python",
       "pygments_lexer": "ipython3",
-      "version": "3.9.13"
+      "version": "3.10.6"
     }
   },
   "nbformat": 4,
diff --git a/examples/Bragg-mirror/Bragg-Mirror.ipynb b/examples/Bragg-mirror/Bragg-Mirror.ipynb
index a288aadf..a5567963 100644
--- a/examples/Bragg-mirror/Bragg-Mirror.ipynb
+++ b/examples/Bragg-mirror/Bragg-Mirror.ipynb
@@ -58,7 +58,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "## Create layers and structure\nThe SiO2 and TiO2 layers are set to the thickness of an \nquarterwaveplate of the respective material at 1550 nm.\n\nThe layers are then stacked alternatingly and put into the \ncomplete structure with air and the glass substrate.\n\n"
+        "## Create layers and structure\nThe SiO2 and TiO2 layers are set to the thickness of an\nquarterwaveplate of the respective material at 1550 nm.\n\nThe layers are then stacked alternatingly and put into the\ncomplete structure with air and the glass substrate.\n\n"
       ]
     },
     {
diff --git a/examples/Interfaces/interface-reflection.ipynb b/examples/Interfaces/interface-reflection.ipynb
index dd78d2be..8b9be4a0 100644
--- a/examples/Interfaces/interface-reflection.ipynb
+++ b/examples/Interfaces/interface-reflection.ipynb
@@ -1,234 +1,133 @@
 {
- "cells": [
-  {
-   "cell_type": "markdown",
-   "id": "c5c77490",
-   "metadata": {},
-   "source": [
-    "# Interface between two material\n",
-    "\n",
-    "Authors: O. Castany, C. Molinaro, M. Müller\n",
-    "\n",
-    "Interface between two materials n1/n2. Calculations of the transmission and reflexion coefficients with varying incidence angle."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "id": "174144bc",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "import elli\n",
-    "from scipy.constants import c, pi\n",
-    "import matplotlib.pyplot as plt"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "59210cc8",
-   "metadata": {},
-   "source": [
-    "## Structure definition"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "id": "086583a1",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Materials\n",
-    "n1 = 1\n",
-    "n2 = 1.5\n",
-    "front = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(n1))\n",
-    "back = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(n2))\n",
-    "\n",
-    "# Structure\n",
-    "s = elli.Structure(front, [], back)\n",
-    "\n",
-    "# Parameters for the calculation\n",
-    "lbda = 1000\n",
-    "k0 = 2 * pi / lbda\n",
-    "Phi_list = np.linspace(0, 89, 90)  #  range for the incidence angles"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "a18384e9",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Analytical calculation"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "id": "a70f1f06",
-   "metadata": {
-    "lines_to_next_cell": 2
-   },
-   "outputs": [],
-   "source": [
-    "Phi_i = np.deg2rad(Phi_list)\n",
-    "\n",
-    "Phi_t = np.arcsin((n1 * np.sin(Phi_i) / n2).astype(complex))\n",
-    "kz1 = n1 * k0 * np.cos(Phi_i)\n",
-    "kz2 = n2 * k0 * np.cos(Phi_t)\n",
-    "r_s = (kz1 - kz2) / (kz1 + kz2)\n",
-    "t_s = 1 + r_s\n",
-    "r_p = (kz1 * n2**2 - kz2 * n1**2) / (kz1 * n2**2 + kz2 * n1**2)\n",
-    "t_p = np.cos(Phi_i) * (1 - r_p) / np.cos(Phi_t)\n",
-    "\n",
-    "# Reflection and transmission coefficients, polarisation s and p\n",
-    "R_th_ss = abs(r_s) ** 2\n",
-    "R_th_pp = abs(r_p) ** 2\n",
-    "t2_th_ss = abs(t_s) ** 2\n",
-    "t2_th_pp = abs(t_p) ** 2\n",
-    "# The power transmission coefficient is T = Re(kz2/kz1) × |t|^2\n",
-    "correction = np.real(kz2 / kz1)\n",
-    "T_th_ss = correction * t2_th_ss\n",
-    "T_th_pp = correction * t2_th_pp"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "6d9bcd02",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Calculation with pyElli"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "id": "e69e418b",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "data = elli.ResultList([s.evaluate(lbda, Phi_i) for Phi_i in Phi_list])\n",
-    "\n",
-    "R_pp = data.R_pp\n",
-    "R_ss = data.R_ss\n",
-    "\n",
-    "T_pp = data.T_pp\n",
-    "T_ss = data.T_ss\n",
-    "\n",
-    "t2_pp = np.abs(data.t_pp) ** 2\n",
-    "t2_ss = np.abs(data.t_ss) ** 2"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "ea42f567",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Plotting"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "id": "988595e8",
-   "metadata": {},
-   "outputs": [
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "%matplotlib inline"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "\n# Interface reflection\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Interface between two materials\nAuthors: O. Castany, C. Molinaro, M. M\u00fcller\n\nInterface between two materials n1/n2.\nCalculations of the transmission and reflexion coefficients with varying incidence angle.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "import elli\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.constants import c, pi"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Structure definition\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "n1 = 1\nn2 = 1.5\nfront = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(n1))\nback = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(n2))\n\n# Structure\ns = elli.Structure(front, [], back)\n\n# Parameters for the calculation\nlbda = 1000\nk0 = 2 * pi / lbda\nPhi_list = np.linspace(0, 89, 90)  # \u00a0range for the incidence angles"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Analytical calculation\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "Phi_i = np.deg2rad(Phi_list)\n\nPhi_t = np.arcsin((n1 * np.sin(Phi_i) / n2).astype(complex))\nkz1 = n1 * k0 * np.cos(Phi_i)\nkz2 = n2 * k0 * np.cos(Phi_t)\nr_s = (kz1 - kz2) / (kz1 + kz2)\nt_s = 1 + r_s\nr_p = (kz1 * n2**2 - kz2 * n1**2) / (kz1 * n2**2 + kz2 * n1**2)\nt_p = np.cos(Phi_i) * (1 - r_p) / np.cos(Phi_t)\n\n# Reflection and transmission coefficients, polarisation s and p\nR_th_ss = abs(r_s) ** 2\nR_th_pp = abs(r_p) ** 2\nt2_th_ss = abs(t_s) ** 2\nt2_th_pp = abs(t_p) ** 2\n# The power transmission coefficient is T = Re(kz2/kz1) \u00d7 |t|^2\ncorrection = np.real(kz2 / kz1)\nT_th_ss = correction * t2_th_ss\nT_th_pp = correction * t2_th_pp"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Calculation with pyElli\n\n"
+      ]
+    },
     {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 864x432 with 1 Axes>"
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "data = elli.ResultList([s.evaluate(lbda, Phi_i) for Phi_i in Phi_list])\n\nR_pp = data.R_pp\nR_ss = data.R_ss\n\nT_pp = data.T_pp\nT_ss = data.T_ss\n\nt2_pp = np.abs(data.t_pp) ** 2\nt2_ss = np.abs(data.t_ss) ** 2"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Plotting\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "fig = plt.figure(figsize=(12.0, 6.0))\nplt.rcParams[\"axes.prop_cycle\"] = plt.cycler(\"color\", \"bgrcmk\")\nax = fig.add_axes([0.1, 0.1, 0.7, 0.8])\n\nd = np.vstack((R_ss, R_pp, t2_ss, t2_pp, T_ss, T_pp)).T\nlines1 = ax.plot(Phi_list, d)\nlegend1 = (\"R_ss\", \"R_pp\", \"t2_ss\", \"t2_pp\", \"T_ss\", \"T_pp\")\n\nd = np.vstack((R_th_ss, R_th_pp, t2_th_ss, t2_th_pp, T_th_ss, T_th_pp)).T\nlines2 = ax.plot(Phi_list, d, \".\")\nlegend2 = (\"R_th_ss\", \"R_th_pp\", \"t2_th_ss\", \"t2_th_pp\", \"T_th_ss\", \"T_th_pp\")\n\nax.legend(\n    lines1 + lines2,\n    legend1 + legend2,\n    loc=\"upper left\",\n    bbox_to_anchor=(1.05, 1),\n    borderaxespad=0.0,\n)\n\nax.set_title(\"Interface n$_1$={:} / n$_2$={:}\".format(n1, n2))\nax.set_xlabel(r\"Incidence angle $\\Phi_i$ \")\nax.set_ylabel(r\"Reflexion and transmission coefficients $R$, $T$, $|t|^2$\")\n\nplt.show()"
       ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
     }
-   ],
-   "source": [
-    "fig = plt.figure(figsize=(12.0, 6.0))\n",
-    "plt.rcParams[\"axes.prop_cycle\"] = plt.cycler(\"color\", \"bgrcmk\")\n",
-    "ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])\n",
-    "\n",
-    "d = np.vstack((R_ss, R_pp, t2_ss, t2_pp, T_ss, T_pp)).T\n",
-    "lines1 = ax.plot(Phi_list, d)\n",
-    "legend1 = (\"R_ss\", \"R_pp\", \"t2_ss\", \"t2_pp\", \"T_ss\", \"T_pp\")\n",
-    "\n",
-    "d = np.vstack((R_th_ss, R_th_pp, t2_th_ss, t2_th_pp, T_th_ss, T_th_pp)).T\n",
-    "lines2 = ax.plot(Phi_list, d, \".\")\n",
-    "legend2 = (\"R_th_ss\", \"R_th_pp\", \"t2_th_ss\", \"t2_th_pp\", \"T_th_ss\", \"T_th_pp\")\n",
-    "\n",
-    "ax.legend(\n",
-    "    lines1 + lines2,\n",
-    "    legend1 + legend2,\n",
-    "    loc=\"upper left\",\n",
-    "    bbox_to_anchor=(1.05, 1),\n",
-    "    borderaxespad=0.0,\n",
-    ")\n",
-    "\n",
-    "ax.set_title(\"Interface n$_1$={:} / n$_2$={:}\".format(n1, n2))\n",
-    "ax.set_xlabel(r\"Incidence angle $\\Phi_i$ \")\n",
-    "ax.set_ylabel(r\"Reflexion and transmission coefficients $R$, $T$, $|t|^2$\")\n",
-    "\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "17927432",
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "jupytext": {
-   "cell_metadata_filter": "-all",
-   "encoding": "# encoding: utf-8",
-   "executable": "/usr/bin/python",
-   "formats": "auto:hydrogen,ipynb",
-   "main_language": "python",
-   "notebook_metadata_filter": "-all"
-  },
-  "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
-   "language": "python",
-   "name": "python3"
-  },
-  "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.10.6"
-  },
-  "vscode": {
-   "interpreter": {
-    "hash": "fce8773319f0403ecd2f0f37c27ee32851d93b84c4068e4fe241eeba95a951df"
-   }
+  ],
+  "metadata": {
+    "kernelspec": {
+      "display_name": "Python 3",
+      "language": "python",
+      "name": "python3"
+    },
+    "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.10.6"
+    }
   },
-  "widgets": {
-   "application/vnd.jupyter.widget-state+json": {
-    "state": {},
-    "version_major": 2,
-    "version_minor": 0
-   }
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
+  "nbformat": 4,
+  "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/examples/Interfaces/interface-reflection.py b/examples/Interfaces/interface-reflection.py
deleted file mode 100644
index 9019eaab..00000000
--- a/examples/Interfaces/interface-reflection.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/python
-# encoding: utf-8
-# %% [markdown]
-# # Interface between two material
-#
-# Authors: O. Castany, C. Molinaro, M. Müller
-#
-# Interface between two materials n1/n2. Calculations of the transmission and reflexion coefficients with varying incidence angle.
-
-# %%
-import numpy as np
-import elli
-from scipy.constants import c, pi
-import matplotlib.pyplot as plt
-
-# %% [markdown]
-# ## Structure definition
-
-# %%
-# Materials
-n1 = 1
-n2 = 1.5
-front = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(n1))
-back = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(n2))
-
-# Structure
-s = elli.Structure(front, [], back)
-
-# Parameters for the calculation
-lbda = 1000
-k0 = 2 * pi / lbda
-Phi_list = np.linspace(0, 89, 90)  #  range for the incidence angles
-
-# %% [markdown]
-# ## Analytical calculation
-# %%
-Phi_i = np.deg2rad(Phi_list)
-
-Phi_t = np.arcsin((n1 * np.sin(Phi_i) / n2).astype(complex))
-kz1 = n1 * k0 * np.cos(Phi_i)
-kz2 = n2 * k0 * np.cos(Phi_t)
-r_s = (kz1 - kz2) / (kz1 + kz2)
-t_s = 1 + r_s
-r_p = (kz1 * n2**2 - kz2 * n1**2) / (kz1 * n2**2 + kz2 * n1**2)
-t_p = np.cos(Phi_i) * (1 - r_p) / np.cos(Phi_t)
-
-# Reflection and transmission coefficients, polarisation s and p
-R_th_ss = abs(r_s) ** 2
-R_th_pp = abs(r_p) ** 2
-t2_th_ss = abs(t_s) ** 2
-t2_th_pp = abs(t_p) ** 2
-# The power transmission coefficient is T = Re(kz2/kz1) × |t|^2
-correction = np.real(kz2 / kz1)
-T_th_ss = correction * t2_th_ss
-T_th_pp = correction * t2_th_pp
-
-
-# %% [markdown]
-# ## Calculation with pyElli
-# %%
-data = elli.ResultList([s.evaluate(lbda, Phi_i) for Phi_i in Phi_list])
-
-R_pp = data.R_pp
-R_ss = data.R_ss
-
-T_pp = data.T_pp
-T_ss = data.T_ss
-
-t2_pp = np.abs(data.t_pp) ** 2
-t2_ss = np.abs(data.t_ss) ** 2
-
-# %% [markdown]
-# ## Plotting
-# %%
-fig = plt.figure(figsize=(12.0, 6.0))
-plt.rcParams["axes.prop_cycle"] = plt.cycler("color", "bgrcmk")
-ax = fig.add_axes([0.1, 0.1, 0.7, 0.8])
-
-d = np.vstack((R_ss, R_pp, t2_ss, t2_pp, T_ss, T_pp)).T
-lines1 = ax.plot(Phi_list, d)
-legend1 = ("R_ss", "R_pp", "t2_ss", "t2_pp", "T_ss", "T_pp")
-
-d = np.vstack((R_th_ss, R_th_pp, t2_th_ss, t2_th_pp, T_th_ss, T_th_pp)).T
-lines2 = ax.plot(Phi_list, d, ".")
-legend2 = ("R_th_ss", "R_th_pp", "t2_th_ss", "t2_th_pp", "T_th_ss", "T_th_pp")
-
-ax.legend(
-    lines1 + lines2,
-    legend1 + legend2,
-    loc="upper left",
-    bbox_to_anchor=(1.05, 1),
-    borderaxespad=0.0,
-)
-
-ax.set_title("Interface n$_1$={:} / n$_2$={:}".format(n1, n2))
-ax.set_xlabel(r"Incidence angle $\Phi_i$ ")
-ax.set_ylabel(r"Reflexion and transmission coefficients $R$, $T$, $|t|^2$")
-
-plt.show()
-
-# %%
diff --git a/examples/Liquid crystals/cholesteric-example.ipynb b/examples/Liquid crystals/cholesteric-example.ipynb
deleted file mode 100644
index f1e9fdf2..00000000
--- a/examples/Liquid crystals/cholesteric-example.ipynb
+++ /dev/null
@@ -1,338 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "id": "b124bd9a-47cd-4729-a44d-49d19380c92d",
-   "metadata": {},
-   "source": [
-    "# Example of a cholesteric liquid crystal\n",
-    "\n",
-    "Author: O. Castany, C. Molinaro, M. Müller"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "id": "fcb3a689-005b-418e-8e33-f7111ff87de2",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import elli\n",
-    "import elli.plot as elliplot\n",
-    "import matplotlib.pyplot as plt\n",
-    "import numpy as np\n",
-    "from scipy.constants import c, pi"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "bf72746e-da5a-4cd6-9682-46a937143da9",
-   "metadata": {},
-   "source": [
-    "## Set parameters"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "id": "7b39dc8f-0b15-4586-882c-8db2c6a2c071",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Materials\n",
-    "glass = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(1.55))\n",
-    "front = back = glass\n",
-    "\n",
-    "# Liquid crystal oriented along the x direction\n",
-    "(no, ne) = (1.5, 1.7)\n",
-    "Dn = ne - no\n",
-    "n_med = (ne + no) / 2\n",
-    "LC = elli.UniaxialMaterial(\n",
-    "    elli.ConstantRefractiveIndex(no), elli.ConstantRefractiveIndex(ne)\n",
-    ")  # ne along z\n",
-    "R = elli.rotation_v_theta(elli.E_Y, 90)  # rotation of pi/2 along y\n",
-    "LC.set_rotation(R)  # apply rotation from z to x\n",
-    "# Cholesteric pitch (nm):\n",
-    "p = 650\n",
-    "# One half turn of a right-handed helix:\n",
-    "TN = elli.TwistedLayer(LC, p / 2, angle=180, div=35)\n",
-    "\n",
-    "# Inhomogeneous layer, repeated layer, and structure\n",
-    "N = 15  # number half pitch repetitions\n",
-    "h = N * p / 2\n",
-    "L = elli.RepeatedLayers([TN], N)\n",
-    "s = elli.Structure(front, [L], back)\n",
-    "\n",
-    "# Calculation parameters\n",
-    "lbda_min, lbda_max = 800, 1200  # (nm)\n",
-    "lbda_B = p * n_med\n",
-    "lbda_list = np.linspace(lbda_min, lbda_max, 100)\n",
-    "k0_list = 2 * pi / lbda_list"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "d000e660",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Analytical calculation for the maximal reflection"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "id": "d6ded450",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "R_th = np.tanh(Dn / n_med * pi * h / p) ** 2\n",
-    "lbda_B1, lbda_B2 = p * no, p * ne"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "d6d0d618",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Calculation with pyElli"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "id": "70d5477d",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "data = s.evaluate(lbda_list, 0)\n",
-    "\n",
-    "T_pp = data.T_pp\n",
-    "T_ps = data.T_ps\n",
-    "T_ss = data.T_ss\n",
-    "T_sp = data.T_sp\n",
-    "\n",
-    "# Transmission coefficients for incident unpolarized light:\n",
-    "T_pn = 0.5 * (T_pp + T_ps)\n",
-    "T_sn = 0.5 * (T_sp + T_ss)\n",
-    "T_nn = T_sn + T_pn\n",
-    "\n",
-    "# Transmission coefficients for 's' and 'p' polarized light, with\n",
-    "# unpolarized measurement.\n",
-    "T_ns = T_ps + T_ss\n",
-    "T_np = T_pp + T_sp\n",
-    "\n",
-    "# Right-circular wave is reflected in the stop-band.\n",
-    "# R_LR, T_LR close to zero.\n",
-    "R_RR = data.Rc_RR\n",
-    "R_LR = data.Rc_LR\n",
-    "T_RR = data.Tc_RR\n",
-    "T_LR = data.Tc_LR\n",
-    "\n",
-    "# Left-circular wave is transmitted in the full spectrum.\n",
-    "# T_RL, R_RL, R_LL close to zero, T_LL close to 1.\n",
-    "T_LL = data.Tc_LL\n",
-    "R_LL = data.Rc_LL"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "1c15b5af",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Text output:\n",
-    "eigenvalues and eigenvectors of the transmission matrix for\n",
-    "a wavelength in the middle of the stop-band."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "id": "2705df90",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "\n",
-      "Transmission in the middle of the stop-band...\n",
-      "\n",
-      "Eigenvalues of the Jones transmission matrix:\n",
-      "[-0.977-0.21j  -0.105-0.002j]\n",
-      "Corresponding power transmission:\n",
-      "[0.999 0.011]\n",
-      "Corresponding eigenvectors:\n",
-      "[[0.729+0.j    0.026+0.684j]\n",
-      " [0.026+0.684j 0.729+0.j   ]]\n",
-      "Normalization to the 'p' componant:\n",
-      "[[1.   +0.j    1.   +0.j   ]\n",
-      " [0.035+0.939j 0.04 -1.064j]]\n",
-      "Ratio 's'/'p':\n",
-      "[0.939 1.064]\n",
-      "Complex angle (°) (+90°: L, -90°: R)\n",
-      "[ 87.858 -87.858]\n"
-     ]
-    }
-   ],
-   "source": [
-    "i = np.argmin(np.abs(lbda_list - lbda_B))  #  index for stop-band center\n",
-    "T = data.jones_matrix_t[i]  #  transmission matrix\n",
-    "eigenvalues, eigenvectors = np.linalg.eig(T)\n",
-    "np.set_printoptions(precision=3)\n",
-    "print(\"\\nTransmission in the middle of the stop-band...\\n\")\n",
-    "print(\"Eigenvalues of the Jones transmission matrix:\")\n",
-    "print(eigenvalues)\n",
-    "print(\"Corresponding power transmission:\")\n",
-    "print(np.abs(eigenvalues) ** 2)\n",
-    "print(\"Corresponding eigenvectors:\")\n",
-    "print(eigenvectors)\n",
-    "# Note: the transformation matrix to the eigenvector basis is\n",
-    "# B = numpy.matrix(eigenvectors), and the matrix B⁻¹ T B is diagonal.\n",
-    "print(\"Normalization to the 'p' componant:\")\n",
-    "print(eigenvectors / eigenvectors[0, :])\n",
-    "print(\"Ratio 's'/'p':\")\n",
-    "print(np.abs(eigenvectors[1, :] / eigenvectors[0, :]))\n",
-    "print(\"Complex angle (°) (+90°: L, -90°: R)\")\n",
-    "print(180 / pi * np.angle(eigenvectors[1, :] / eigenvectors[0, :]))\n",
-    "# We observe that the eigenvectors are nearly perfectly polarized circular waves"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "66086560",
-   "metadata": {
-    "lines_to_next_cell": 0
-   },
-   "source": [
-    "## Plotting"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 6,
-   "id": "f3dfc88f",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "fig = plt.figure()\n",
-    "ax = fig.add_subplot(1, 1, 1)\n",
-    "\n",
-    "# Draw rectangle for λ ∈ [p·no, p·ne], and T ∈ [0, R_th]\n",
-    "rectangle = plt.Rectangle((lbda_B1, 0), lbda_B2 - lbda_B1, R_th, color=\"cyan\")\n",
-    "ax.add_patch(rectangle)\n",
-    "\n",
-    "ax.plot(lbda_list, R_RR, \"--\", label=\"R_RR\")\n",
-    "ax.plot(lbda_list, T_RR, label=\"T_RR\")\n",
-    "ax.plot(lbda_list, T_nn, label=\"T_nn\")\n",
-    "ax.plot(lbda_list, T_ns, label=\"T_ns\")\n",
-    "ax.plot(lbda_list, T_np, label=\"T_np\")\n",
-    "\n",
-    "ax.legend(loc=\"center right\", bbox_to_anchor=(1.00, 0.50))\n",
-    "\n",
-    "ax.set_title(\n",
-    "    \"Right-handed Cholesteric Liquid Crystal, aligned along \\n\"\n",
-    "    + \"the $x$ direction, with {:.1f} helix pitches.\".format(N / 2.0)\n",
-    ")\n",
-    "ax.set_xlabel(r\"Wavelength $\\lambda_0$ (nm)\")\n",
-    "ax.set_ylabel(r\"Power transmission $T$ and reflexion $R$\")\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 7,
-   "id": "448584be-4111-49fd-b6cd-ba636a501a8e",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "<AxesSubplot:xlabel='z (nm)', ylabel=\"n'\">"
-      ]
-     },
-     "execution_count": 7,
-     "metadata": {},
-     "output_type": "execute_result"
-    },
-    {
-     "data": {
-      "image/png": "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d3pxc8kll+DZZ58FgJh7gCqlUKdOHXTr1g0AULt2baSmpiIuLva3OSkpCW3atEGLFi0AADfeeCNuvPFGlCpVKubYANC7d2/UqFEDAHDPPffgyiuvjDlmVlYWAGD48OEoU6YMAGDQoEGIj4+PuQe8/vvJkyf7to0YMSLguVhj//e///VtmzBhgq2xJ06c6Num/x+7Yr/55pu+bR999JGtsYcMGQLA83l8+eWXAeS9z1aJCKpVq4Z7770XAFCtWjX07ds3pphaYmIiWrRogTZt2gAAmjZtinbt2tly3SQlJaF79+7405/+BADo3Lkz6tevH/P1rkdwDB06FJdeeikA4NFHH0VycnLM51q/j+PHj/dt+9///d+A52KN/eGHH8YUx2mYxIuAatWqAQBeffVVyzG+/fZbrF69GnXq1IFSyre9Zs2acLvdmDRpkuXYc+fOxb59+1C3bt2A7XXr1sXu3bvx2WefWY797rvvAkBA0lZKoXbt2vjmm2/www8/WI79yiuvAAAuv/xy37a4uDhceeWVmD59OtLT0y3H1smkSpW8UR+JiYkAgDfeeCOmYUoPP/wwAKB8+fK+bf43IVZv9nJzczFgwAAAQHJysm97uXLlAAAPPfSQpbgAcOrUKd/nV58HAKhcuTIA4Mknn7Qce9euXZg6dSpq1KgRkKD0+/riiy9ajr1mzRosX74ctWvXDrhu9A3l22+/bTn2okWLkJ6enu+6qVOnDg4fPozZs2dbjj158mRkZWWhZs2avm36Jn7NmjVYuXKl5divv/46AOCKK67wbYuLi0OtWrUwd+5cbNmyxXLsp59+GgCQkpLi25aQkIDk5GSMGzcupqGD/fv3BwBUqFDBcgwnYhIvArp06QIA2LRpk+UYv/76KwDggQceCNj+z3/+EwBiSoZr164FADzyyCMB2/v16wcAWLduneXYq1evBgDcd999Adt79+4NIO91WaG/bDp16hSwXddUpKWlWY69b98+AMBf//rXgO3t27cH4BmnapUe33/ttdf6tlWoUAG1a9cGAMtjjfXY/urVqwfcfDRo0ABKKWRkZFg84rzz8be//S1g+4033ggAOHjwoOXY27dvBwDceeedAds7dOgAANi6davl2Bs3bgQA9OrVK2B7jx49AADff/+95djr168HkJdcNH2ztGbNGsux9fWsrxPtwQcfBABs2LDB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\n",
-      "text/plain": [
-       "<Figure size 576x216 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "elliplot.draw_structure(s)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "b467d50c-e003-4b09-81b8-56eb21ebff27",
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "jupytext": {
-   "cell_metadata_filter": "-all",
-   "encoding": "# encoding: utf-8",
-   "executable": "/usr/bin/python",
-   "formats": "ipynb,auto:hydrogen",
-   "main_language": "python",
-   "notebook_metadata_filter": "-all"
-  },
-  "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
-   "language": "python",
-   "name": "python3"
-  },
-  "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.10.6"
-  },
-  "widgets": {
-   "application/vnd.jupyter.widget-state+json": {
-    "state": {},
-    "version_major": 2,
-    "version_minor": 0
-   }
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/examples/Liquid crystals/cholesteric-example.py b/examples/Liquid crystals/cholesteric-example.py
deleted file mode 100644
index 28dfa3aa..00000000
--- a/examples/Liquid crystals/cholesteric-example.py
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/python
-# encoding: utf-8
-# %% [markdown]
-# # Example of a cholesteric liquid crystal
-#
-# Author: O. Castany, C. Molinaro, M. Müller
-
-# %%
-import elli
-import elli.plot as elliplot
-import matplotlib.pyplot as plt
-import numpy as np
-from scipy.constants import c, pi
-
-# %% [markdown]
-# ## Set parameters
-
-# %%
-# Materials
-glass = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(1.55))
-front = back = glass
-
-# Liquid crystal oriented along the x direction
-(no, ne) = (1.5, 1.7)
-Dn = ne - no
-n_med = (ne + no) / 2
-LC = elli.UniaxialMaterial(
-    elli.ConstantRefractiveIndex(no), elli.ConstantRefractiveIndex(ne)
-)  # ne along z
-R = elli.rotation_v_theta(elli.E_Y, 90)  # rotation of pi/2 along y
-LC.set_rotation(R)  # apply rotation from z to x
-# Cholesteric pitch (nm):
-p = 650
-# One half turn of a right-handed helix:
-TN = elli.TwistedLayer(LC, p / 2, angle=180, div=35)
-
-# Inhomogeneous layer, repeated layer, and structure
-N = 15  # number half pitch repetitions
-h = N * p / 2
-L = elli.RepeatedLayers([TN], N)
-s = elli.Structure(front, [L], back)
-
-# Calculation parameters
-lbda_min, lbda_max = 800, 1200  # (nm)
-lbda_B = p * n_med
-lbda_list = np.linspace(lbda_min, lbda_max, 100)
-k0_list = 2 * pi / lbda_list
-
-# %% [markdown]
-# ## Analytical calculation for the maximal reflection
-# %%
-R_th = np.tanh(Dn / n_med * pi * h / p) ** 2
-lbda_B1, lbda_B2 = p * no, p * ne
-
-# %% [markdown]
-# ## Calculation with pyElli
-# %%
-data = s.evaluate(lbda_list, 0)
-
-T_pp = data.T_pp
-T_ps = data.T_ps
-T_ss = data.T_ss
-T_sp = data.T_sp
-
-# Transmission coefficients for incident unpolarized light:
-T_pn = 0.5 * (T_pp + T_ps)
-T_sn = 0.5 * (T_sp + T_ss)
-T_nn = T_sn + T_pn
-
-# Transmission coefficients for 's' and 'p' polarized light, with
-# unpolarized measurement.
-T_ns = T_ps + T_ss
-T_np = T_pp + T_sp
-
-# Right-circular wave is reflected in the stop-band.
-# R_LR, T_LR close to zero.
-R_RR = data.Rc_RR
-R_LR = data.Rc_LR
-T_RR = data.Tc_RR
-T_LR = data.Tc_LR
-
-# Left-circular wave is transmitted in the full spectrum.
-# T_RL, R_RL, R_LL close to zero, T_LL close to 1.
-T_LL = data.Tc_LL
-R_LL = data.Rc_LL
-
-# %% [markdown]
-# ## Text output:
-# eigenvalues and eigenvectors of the transmission matrix for
-# a wavelength in the middle of the stop-band.
-# %%
-i = np.argmin(np.abs(lbda_list - lbda_B))  #  index for stop-band center
-T = data.jones_matrix_t[i]  #  transmission matrix
-eigenvalues, eigenvectors = np.linalg.eig(T)
-np.set_printoptions(precision=3)
-print("\nTransmission in the middle of the stop-band...\n")
-print("Eigenvalues of the Jones transmission matrix:")
-print(eigenvalues)
-print("Corresponding power transmission:")
-print(np.abs(eigenvalues) ** 2)
-print("Corresponding eigenvectors:")
-print(eigenvectors)
-# Note: the transformation matrix to the eigenvector basis is
-# B = numpy.matrix(eigenvectors), and the matrix B⁻¹ T B is diagonal.
-print("Normalization to the 'p' componant:")
-print(eigenvectors / eigenvectors[0, :])
-print("Ratio 's'/'p':")
-print(np.abs(eigenvectors[1, :] / eigenvectors[0, :]))
-print("Complex angle (°) (+90°: L, -90°: R)")
-print(180 / pi * np.angle(eigenvectors[1, :] / eigenvectors[0, :]))
-# We observe that the eigenvectors are nearly perfectly polarized circular waves
-
-# %% [markdown]
-# ## Plotting
-# %%
-fig = plt.figure()
-ax = fig.add_subplot(1, 1, 1)
-
-# Draw rectangle for λ ∈ [p·no, p·ne], and T ∈ [0, R_th]
-rectangle = plt.Rectangle((lbda_B1, 0), lbda_B2 - lbda_B1, R_th, color="cyan")
-ax.add_patch(rectangle)
-
-ax.plot(lbda_list, R_RR, "--", label="R_RR")
-ax.plot(lbda_list, T_RR, label="T_RR")
-ax.plot(lbda_list, T_nn, label="T_nn")
-ax.plot(lbda_list, T_ns, label="T_ns")
-ax.plot(lbda_list, T_np, label="T_np")
-
-ax.legend(loc="center right", bbox_to_anchor=(1.00, 0.50))
-
-ax.set_title(
-    "Right-handed Cholesteric Liquid Crystal, aligned along \n"
-    + "the $x$ direction, with {:.1f} helix pitches.".format(N / 2.0)
-)
-ax.set_xlabel(r"Wavelength $\lambda_0$ (nm)")
-ax.set_ylabel(r"Power transmission $T$ and reflexion $R$")
-plt.show()
-
-# %%
-elliplot.draw_structure(s)
-
-# %%
diff --git a/examples/Liquid crystals/cholesteric-liquid.ipynb b/examples/Liquid crystals/cholesteric-liquid.ipynb
new file mode 100644
index 00000000..6d4f53ad
--- /dev/null
+++ b/examples/Liquid crystals/cholesteric-liquid.ipynb
@@ -0,0 +1,133 @@
+{
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "%matplotlib inline"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "\n# Cholesteric Liquid Crystal\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Example of a cholesteric liquid crystal\nAuthors: O. Castany, C. Molinaro, M. M\u00fcller\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "import elli\nimport elli.plot as elliplot\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.constants import c, pi"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Setup materials and structure\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "glass = elli.IsotropicMaterial(elli.ConstantRefractiveIndex(1.55))\nfront = back = glass\n\n# Liquid crystal oriented along the x direction\n(no, ne) = (1.5, 1.7)\nDn = ne - no\nn_med = (ne + no) / 2\nLC = elli.UniaxialMaterial(\n    elli.ConstantRefractiveIndex(no), elli.ConstantRefractiveIndex(ne)\n)  # ne is along z\nR = elli.rotation_v_theta(elli.E_Y, 90)  # rotation of pi/2 along y\nLC.set_rotation(R)  # apply rotation from z to x\n\n# Cholesteric pitch (nm):\np = 650\n\n# One half turn of a right-handed helix:\nTN = elli.TwistedLayer(LC, p / 2, angle=180, div=35)\n\n# Repetition the helix layer\nN = 15  # number half pitch repetitions\nh = N * p / 2\nL = elli.RepeatedLayers([TN], N)\ns = elli.Structure(front, [L], back)\n\n# Calculation parameters\nlbda_min, lbda_max = 800, 1200  # (nm)\nlbda_B = p * n_med\nlbda_list = np.linspace(lbda_min, lbda_max, 100)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Analytical calculation for the maximal reflection\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "R_th = np.tanh(Dn / n_med * pi * h / p) ** 2\nlbda_B1, lbda_B2 = p * no, p * ne"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Calculation with pyElli\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "data = s.evaluate(lbda_list, 0)\n\nT_pp = data.T_pp\nT_ps = data.T_ps\nT_ss = data.T_ss\nT_sp = data.T_sp\n\n# Transmission coefficients for incident unpolarized light:\nT_pn = 0.5 * (T_pp + T_ps)\nT_sn = 0.5 * (T_sp + T_ss)\nT_nn = T_sn + T_pn\n\n# Transmission coefficients for 's' and 'p' polarized light, with\n# unpolarized measurement.\nT_ns = T_ps + T_ss\nT_np = T_pp + T_sp\n\n# Right-circular wave is reflected in the stop-band.\n# R_LR, T_LR close to zero.\nR_RR = data.Rc_RR\nR_LR = data.Rc_LR\nT_RR = data.Tc_RR\nT_LR = data.Tc_LR\n\n# Left-circular wave is transmitted in the full spectrum.\n# T_RL, R_RL, R_LL close to zero, T_LL close to 1.\nT_LL = data.Tc_LL\nR_LL = data.Rc_LL"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Plotting\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "fig = plt.figure()\nax = fig.add_subplot(1, 1, 1)\n\n# Draw rectangle for \u03bb \u2208 [p\u00b7no, p\u00b7ne], and T \u2208 [0, R_th]\nrectangle = plt.Rectangle((lbda_B1, 0), lbda_B2 - lbda_B1, R_th, color=\"cyan\")\nax.add_patch(rectangle)\n\nax.plot(lbda_list, R_RR, \"--\", label=\"R_RR\")\nax.plot(lbda_list, T_RR, label=\"T_RR\")\nax.plot(lbda_list, T_nn, label=\"T_nn\")\nax.plot(lbda_list, T_ns, label=\"T_ns\")\nax.plot(lbda_list, T_np, label=\"T_np\")\n\nax.legend(loc=\"center right\", bbox_to_anchor=(1.00, 0.50))\n\nax.set_title(\n    \"Right-handed Cholesteric Liquid Crystal, aligned along \\n\"\n    + \"the $x$ direction, with {:.1f} helix pitches.\".format(N / 2.0)\n)\nax.set_xlabel(r\"Wavelength $\\lambda_0$ (nm)\")\nax.set_ylabel(r\"Power transmission $T$ and reflexion $R$\")\nplt.show()\n\nelliplot.draw_structure(s)"
+      ]
+    }
+  ],
+  "metadata": {
+    "kernelspec": {
+      "display_name": "Python 3",
+      "language": "python",
+      "name": "python3"
+    },
+    "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.10.6"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/examples/SiO2_Si Mueller Matrix/SiO2_Si Mueller Matrix.ipynb b/examples/SiO2_Si Mueller Matrix/SiO2_Si Mueller Matrix.ipynb
index 4af3ce19..e6dfa075 100644
--- a/examples/SiO2_Si Mueller Matrix/SiO2_Si Mueller Matrix.ipynb
+++ b/examples/SiO2_Si Mueller Matrix/SiO2_Si Mueller Matrix.ipynb
@@ -44,7 +44,7 @@
       },
       "outputs": [],
       "source": [
-        "MM = elli.SpectraRay.read_mmatrix(\"Wafer_MM_70.txt\").loc[210:820]\nprint(MM)"
+        "MM = elli.read_spectraray_mmatrix(\"Wafer_MM_70.txt\").loc[210:820]\nprint(MM)"
       ]
     },
     {
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "@fit_mueller_matrix(MM, params, display_single=False, sharex=True, full_scale=False)\ndef model(lbda, params):\n    sr = elli.SpectraRay(\"./\")\n    Si = elli.IsotropicMaterial(sr.loadDispersionTable(\"Si_Aspnes.mat\"))\n\n    SiO2 = elli.Cauchy(\n        params[\"SiO2_n0\"],\n        params[\"SiO2_n1\"],\n        params[\"SiO2_n2\"],\n        params[\"SiO2_k0\"],\n        params[\"SiO2_k1\"],\n        params[\"SiO2_k2\"],\n    ).get_mat()\n\n    Layer = [elli.Layer(SiO2, params[\"SiO2_d\"])]\n\n    return elli.Structure(elli.AIR, Layer, Si).evaluate(\n        lbda, 70, solver=elli.Solver4x4, propagator=elli.PropagatorExpm()\n    )"
+        "@fit_mueller_matrix(MM, params, display_single=False, sharex=True, full_scale=False)\ndef model(lbda, params):\n    sr = elli.TableSpectraRay(\"./\")\n    Si = elli.IsotropicMaterial(sr.load_dispersion_table(\"Si_Aspnes.mat\"))\n\n    SiO2 = elli.Cauchy(\n        params[\"SiO2_n0\"],\n        params[\"SiO2_n1\"],\n        params[\"SiO2_n2\"],\n        params[\"SiO2_k0\"],\n        params[\"SiO2_k1\"],\n        params[\"SiO2_k2\"],\n    ).get_mat()\n\n    Layer = [elli.Layer(SiO2, params[\"SiO2_d\"])]\n\n    return elli.Structure(elli.AIR, Layer, Si).evaluate(\n        lbda, 70, solver=elli.Solver4x4, propagator=elli.PropagatorExpm()\n    )"
       ]
     },
     {
@@ -197,7 +197,7 @@
       "name": "python",
       "nbconvert_exporter": "python",
       "pygments_lexer": "ipython3",
-      "version": "3.9.13"
+      "version": "3.10.6"
     }
   },
   "nbformat": 4,
diff --git a/examples/TiO2 Fit/TiO2 Multilayerfit.ipynb b/examples/TiO2 Fit/TiO2 Multilayerfit.ipynb
index 515e9bf9..d91511bd 100644
--- a/examples/TiO2 Fit/TiO2 Multilayerfit.ipynb
+++ b/examples/TiO2 Fit/TiO2 Multilayerfit.ipynb
@@ -44,7 +44,7 @@
       },
       "outputs": [],
       "source": [
-        "tss = elli.SpectraRay.read_psi_delta_file(\"TiO2_400cycles.txt\").loc[400:800]"
+        "tss = elli.read_spectraray_psi_delta(\"TiO2_400cycles.txt\").loc[400:800]"
       ]
     },
     {
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "@fit(tss, params)\ndef model(lbda, params):\n    sr = elli.SpectraRay(\"./\")\n    Si = elli.IsotropicMaterial(sr.loadDispersionTable(\"Si_Aspnes.mat\"))\n\n    SiO2 = elli.Cauchy(\n        params[\"SiO2_n0\"],\n        params[\"SiO2_n1\"],\n        params[\"SiO2_n2\"],\n        params[\"SiO2_k0\"],\n        params[\"SiO2_k1\"],\n        params[\"SiO2_k2\"],\n    ).get_mat()\n    TiO2 = elli.Cauchy(\n        params[\"TiO2_n0\"],\n        params[\"TiO2_n1\"],\n        params[\"TiO2_n2\"],\n        params[\"TiO2_k0\"],\n        params[\"TiO2_k1\"],\n        params[\"TiO2_k2\"],\n    ).get_mat()\n\n    Layer = [elli.Layer(TiO2, params[\"TiO2_d\"]), elli.Layer(SiO2, params[\"SiO2_d\"])]\n\n    return elli.Structure(elli.AIR, Layer, Si).evaluate(lbda, 70, solver=elli.Solver2x2)\n    # Alternative: Use 4x4 Solver with scipy propagator\n    # return elli.Structure(elli.AIR, Layer, Si).evaluate(lbda, 70, solver=elli.Solver4x4, propagator=elli.PropagatorExpm())"
+        "@fit(tss, params)\ndef model(lbda, params):\n    sr = elli.TableSpectraRay(\"./\")\n    Si = elli.IsotropicMaterial(sr.load_dispersion_table(\"Si_Aspnes.mat\"))\n\n    SiO2 = elli.Cauchy(\n        params[\"SiO2_n0\"],\n        params[\"SiO2_n1\"],\n        params[\"SiO2_n2\"],\n        params[\"SiO2_k0\"],\n        params[\"SiO2_k1\"],\n        params[\"SiO2_k2\"],\n    ).get_mat()\n    TiO2 = elli.Cauchy(\n        params[\"TiO2_n0\"],\n        params[\"TiO2_n1\"],\n        params[\"TiO2_n2\"],\n        params[\"TiO2_k0\"],\n        params[\"TiO2_k1\"],\n        params[\"TiO2_k2\"],\n    ).get_mat()\n\n    Layer = [elli.Layer(TiO2, params[\"TiO2_d\"]), elli.Layer(SiO2, params[\"SiO2_d\"])]\n\n    return elli.Structure(elli.AIR, Layer, Si).evaluate(lbda, 70, solver=elli.Solver2x2)\n    # Alternative: Use 4x4 Solver with scipy propagator\n    # return elli.Structure(elli.AIR, Layer, Si).evaluate(lbda, 70, solver=elli.Solver4x4, propagator=elli.PropagatorExpm())"
       ]
     },
     {
@@ -161,7 +161,7 @@
       "name": "python",
       "nbconvert_exporter": "python",
       "pygments_lexer": "ipython3",
-      "version": "3.9.13"
+      "version": "3.10.6"
     }
   },
   "nbformat": 4,
diff --git a/examples/gallery/plot_01_basic_usage.py b/examples/gallery/plot_01_basic_usage.py
index d8d44df9..4ddab2ac 100644
--- a/examples/gallery/plot_01_basic_usage.py
+++ b/examples/gallery/plot_01_basic_usage.py
@@ -8,7 +8,6 @@
 # %%
 import elli
 from elli.fitting import ParamsHist, fit
-from elli.nexus import read_psi_delta
 
 # sphinx_gallery_thumbnail_path = '_static/basic_usage.png'
 
@@ -26,7 +25,7 @@
 # This is because we're using literature values for Si,
 # which are only defined in this wavelength range.
 ANGLE = 70
-psi_delta = read_psi_delta("SiO2onSi.ellips.nxs").loc[ANGLE].loc[210:800]
+psi_delta = elli.read_nexus_psi_delta("SiO2onSi.ellips.nxs").loc[ANGLE].loc[210:800]
 
 # %%
 # Setting parameters
@@ -100,8 +99,8 @@
 @fit(psi_delta, params)
 def model(lbda, params):
     # Load the literature values for Si
-    sr = elli.SpectraRay("./")
-    Si = elli.IsotropicMaterial(sr.loadDispersionTable("Si_Aspnes.mat"))
+    sr = elli.TableSpectraRay("./")
+    Si = elli.IsotropicMaterial(sr.load_dispersion_table("Si_Aspnes.mat"))
 
     # Generate the cauchy model from the current lmfit parameters
     SiO2 = elli.Cauchy(
diff --git a/examples/gallery/plot_02_TiO2_multilayer.py b/examples/gallery/plot_02_TiO2_multilayer.py
index e0411138..ec720686 100644
--- a/examples/gallery/plot_02_TiO2_multilayer.py
+++ b/examples/gallery/plot_02_TiO2_multilayer.py
@@ -19,7 +19,7 @@
 #
 # The sample is an ALD grown TiO2 sample (with 400 cycles)
 # on commercially available SiO2 / Si substrate.
-tss = elli.SpectraRay.read_psi_delta_file("TiO2_400cycles.txt").loc[400:800]
+tss = elli.read_spectraray_psi_delta("TiO2_400cycles.txt").loc[400:800]
 
 # %%
 # Set start parameters
@@ -57,8 +57,8 @@
 # with which you can select the start parameters before fitting the data.
 @fit(tss, params)
 def model(lbda, params):
-    sr = elli.SpectraRay("./")
-    Si = elli.IsotropicMaterial(sr.loadDispersionTable("Si_Aspnes.mat"))
+    sr = elli.TableSpectraRay("./")
+    Si = elli.IsotropicMaterial(sr.load_dispersion_table("Si_Aspnes.mat"))
 
     SiO2 = elli.Cauchy(
         params["SiO2_n0"],
diff --git a/examples/gallery/plot_SiO2_Si_MM.py b/examples/gallery/plot_SiO2_Si_MM.py
index 90cd9c41..1fc80112 100644
--- a/examples/gallery/plot_SiO2_Si_MM.py
+++ b/examples/gallery/plot_SiO2_Si_MM.py
@@ -23,7 +23,7 @@
 # The data is scaled by the M11 element, such that :math:`M_{11} = 1` for all wavelengths.
 # To show the structure we print the `MM` dataframe.
 # If you load your data from another source make sure it adheres to this form.
-MM = elli.SpectraRay.read_mmatrix("Wafer_MM_70.txt").loc[210:820]
+MM = elli.read_spectraray_mmatrix("Wafer_MM_70.txt").loc[210:820]
 print(MM)
 
 # %%
@@ -49,8 +49,8 @@
 # with which you can select the start parameters before fitting the data.
 @fit_mueller_matrix(MM, params, display_single=False, sharex=True, full_scale=False)
 def model(lbda, params):
-    sr = elli.SpectraRay("./")
-    Si = elli.IsotropicMaterial(sr.loadDispersionTable("Si_Aspnes.mat"))
+    sr = elli.TableSpectraRay("./")
+    Si = elli.IsotropicMaterial(sr.load_dispersion_table("Si_Aspnes.mat"))
 
     SiO2 = elli.Cauchy(
         params["SiO2_n0"],
diff --git a/generate_ipynb_from_gallery.sh b/generate_ipynb_from_gallery.sh
index e71f9440..37e5343e 100755
--- a/generate_ipynb_from_gallery.sh
+++ b/generate_ipynb_from_gallery.sh
@@ -22,4 +22,12 @@ cp Si_Aspnes.mat ../TiO2\ Fit/
 
 # Copy Bragg-Mirror
 sphx_glr_python_to_jupyter.py plot_bragg_mirror.py
-mv plot_bragg_mirror.ipynb ../Bragg-mirror/Bragg-Mirror.ipynb
\ No newline at end of file
+mv plot_bragg_mirror.ipynb ../Bragg-mirror/Bragg-Mirror.ipynb
+
+# Copy Interface Reflection
+sphx_glr_python_to_jupyter.py plot_interface_reflection.py
+mv plot_interface_reflection.ipynb ../Interfaces/interface-reflection.ipynb
+
+# Copy Cholesteric Liquid
+sphx_glr_python_to_jupyter.py plot_cholesteric_lq.py
+mv plot_cholesteric_lq.ipynb ../Liquid\ crystals/cholesteric-liquid.ipynb
diff --git a/src/elli/__init__.py b/src/elli/__init__.py
index a4b6fb71..2c9f8245 100644
--- a/src/elli/__init__.py
+++ b/src/elli/__init__.py
@@ -1,16 +1,18 @@
 # Encoding: utf-8
 import sys
-from .dispersions.dispersions import *
+
+from .dispersions import *
 from .dispersions.base_dispersion import *
 from .experiment import Experiment
+from .importer.nexus import *
+from .importer.spectraray import *
 from .materials import *
+from .materials_db import *
 from .result import Result, ResultList
 from .solver2x2 import Solver2x2
 from .solver4x4 import *
 from .structure import *
 from .utils import *
-from .spectraray import *
-from .materials_db import *
 
 if sys.version_info.major >= 3 and sys.version_info.minor > 7:
     from importlib.metadata import PackageNotFoundError, version
diff --git a/src/elli/dispersions/__init__.py b/src/elli/dispersions/__init__.py
index e69de29b..8ff0bfe2 100644
--- a/src/elli/dispersions/__init__.py
+++ b/src/elli/dispersions/__init__.py
@@ -0,0 +1,16 @@
+# Encoding: utf-8
+from .cauchy import Cauchy
+from .constant_refractive_index import ConstantRefractiveIndex
+from .drude_energy import DrudeEnergy
+from .drude_resistivity import DrudeResistivity
+from .epsilon_inf import EpsilonInf
+from .gaussian import Gaussian
+from .lorentz_energy import LorentzEnergy
+from .lorentz_lambda import LorentzLambda
+from .poles import Poles
+from .sellmeier import Sellmeier
+from .table_epsilon import TableEpsilon
+from .table_index import Table
+from .table_spectraray import TableSpectraRay
+from .tanguy import Tanguy
+from .tauc_lorentz import TaucLorentz
diff --git a/src/elli/dispersions/base_dispersion.py b/src/elli/dispersions/base_dispersion.py
index 324f3fed..c3503334 100644
--- a/src/elli/dispersions/base_dispersion.py
+++ b/src/elli/dispersions/base_dispersion.py
@@ -1,3 +1,4 @@
+# Encoding: utf-8
 """Abstract base class and utility classes for pyElli dispersion"""
 from abc import ABC, abstractmethod
 from typing import Union
@@ -8,7 +9,7 @@
 from numpy.lib.scimath import sqrt
 
 from .. import materials
-from . import dispersions
+from .. import dispersions
 
 
 class InvalidParameters(Exception):
diff --git a/src/elli/dispersions/cauchy.py b/src/elli/dispersions/cauchy.py
new file mode 100644
index 00000000..8fcd4a10
--- /dev/null
+++ b/src/elli/dispersions/cauchy.py
@@ -0,0 +1,45 @@
+# Encoding: utf-8
+"""Cauchy dispersion."""
+import numpy.typing as npt
+
+from .base_dispersion import Dispersion
+
+
+class Cauchy(Dispersion):
+    r"""Cauchy dispersion.
+
+    Single parameters:
+        :n0: Defaults to 1.5.
+        :n1: Defaults to 0. Unit in nm\ :sup:`2`.
+        :n2: Defaults to 0. Unit in nm\ :sup:`4`.
+        :k0: Defaults to 0.
+        :k1: Defaults to 0. Unit in nm\ :sup:`2`.
+        :k2: Defaults to 0. Unit in nm\ :sup:`4`.
+
+    Repeated parameters:
+        --
+
+    Output:
+        .. math::
+            \varepsilon^2(\lambda) =
+            \boldsymbol{n_0} + 100  \boldsymbol{n_1}/\lambda^2 + 10^7 \boldsymbol{n_2}/\lambda^4
+            + i (\boldsymbol{k_0} + 100 \boldsymbol{k_1}/\lambda^2
+            + 10^7 \boldsymbol{k_2}/\lambda^4)
+    """
+
+    single_params_template = {"n0": 1.5, "n1": 0, "n2": 0, "k0": 0, "k1": 0, "k2": 0}
+    rep_params_template = {}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        refr_index = (
+            self.single_params.get("n0")
+            + 1e2 * self.single_params.get("n1") / lbda**2
+            + 1e7 * self.single_params.get("n2") / lbda**4
+            + 1j
+            * (
+                self.single_params.get("k0")
+                + 1e2 * self.single_params.get("k1") / lbda**2
+                + 1e7 * self.single_params.get("k2") / lbda**4
+            )
+        )
+        return refr_index**2
diff --git a/src/elli/dispersions/constant_refractive_index.py b/src/elli/dispersions/constant_refractive_index.py
new file mode 100644
index 00000000..9ffb8ae9
--- /dev/null
+++ b/src/elli/dispersions/constant_refractive_index.py
@@ -0,0 +1,26 @@
+# Encoding: utf-8
+"""Constant refractive index."""
+import numpy.typing as npt
+
+from .base_dispersion import Dispersion
+
+
+class ConstantRefractiveIndex(Dispersion):
+    r"""Constant refractive index.
+
+    Single parameters:
+        :n: The constant value of the refractive index. Defaults to 1.
+
+    Repeated parameters:
+        --
+
+    Output:
+        .. math::
+            \varepsilon(\lambda) = \boldsymbol{n}^2
+    """
+
+    single_params_template = {"n": 1}
+    rep_params_template = {}
+
+    def dielectric_function(self, _: npt.ArrayLike) -> npt.NDArray:
+        return self.single_params.get("n") ** 2
diff --git a/src/elli/dispersions/dispersions.py b/src/elli/dispersions/dispersions.py
deleted file mode 100644
index eb879613..00000000
--- a/src/elli/dispersions/dispersions.py
+++ /dev/null
@@ -1,626 +0,0 @@
-# Encoding: utf-8
-"""The dispersions are the central part of pyElli and the transfer-matrix method.
-They describe the change of dielectric function or refractive index with the wavelength.
-In pyElli the default wavelength unit is nm.
-Each dispersion has two distinct sets of parameters:
-
-    * Parameters which can be given only once (single parameters).
-    * Parameters which can be given in multiple sets (repeated parameters),
-      e.g. a set of oscillator parameters.
-
-The syntax for each of the parameter sets is different.
-For the single parameters they are given in the class constructor:
-
-    .. highlight:: python
-    .. code-block:: python
-
-        Cauchy(n0=1.458, n1=3.54e-3, n2=0, k0=0, k1=0, k2=0)
-
-Repeated parameters are added via the add() function:
-
-    .. highlight:: python
-    .. code-block:: python
-
-        Sellmeier().add(A=1, B=1).add(A=1, B=2)
-
-For dispersions having both, single and repeated parameters can be used together:
-
-    .. highlight:: python
-    .. code-block:: python
-
-        TaucLorentz(Eg=2).add(A=10, E=2.5, C=0.1)
-
-If parameters are not fully provided, they are set to their respective default values.
-The available parameters and their respective default values
-are given in the respective class documentation.
-
-All classes inherit from the abstract base class `Dispersion`_.
-It provides basic functionality, such as returning dataframes or arrays
-containing the wavelength dependent dielectric function of the
-dispersion relation at current parameter set.
-
-Dispersions can be added with the `+` operator, or if you want to chain
-more than two dispersions together you may have a look at the `DispersionSum`_ class.
-"""
-import numpy as np
-import numpy.typing as npt
-import scipy.constants as sc
-import scipy.interpolate
-from numpy.lib.scimath import sqrt
-
-# pylint: disable=no-name-in-module
-from scipy.special import dawsn, digamma, gamma
-
-from ..utils import conversion_wavelength_energy
-from .base_dispersion import Dispersion, InvalidParameters
-
-
-class ConstantRefractiveIndex(Dispersion):
-    r"""Constant refractive index.
-
-    Single parameters:
-        :n: The constant value of the refractive index. Defaults to 1.
-
-    Repeated parameters:
-        --
-
-    Output:
-        .. math::
-            \varepsilon(\lambda) = \boldsymbol{n}^2
-    """
-
-    single_params_template = {"n": 1}
-    rep_params_template = {}
-
-    def dielectric_function(self, _: npt.ArrayLike) -> npt.NDArray:
-        return self.single_params.get("n") ** 2
-
-
-class EpsilonInf(Dispersion):
-    r"""Constant epsilon infinity.
-
-    Single parameters:
-        :eps: Constant value for the constant epsilon. Defaults to 1.
-
-    Repeated parameters:
-        --
-
-    Output:
-        .. math::
-            \varepsilon(\lambda) = \textbf{eps}
-    """
-
-    single_params_template = {"eps": 1}
-    rep_params_template = {}
-
-    def dielectric_function(self, _: npt.ArrayLike) -> npt.NDArray:
-        return self.single_params.get("eps")
-
-
-class Cauchy(Dispersion):
-    r"""Cauchy dispersion.
-
-    Single parameters:
-        :n0: Defaults to 1.5.
-        :n1: Defaults to 0. Unit in nm\ :sup:`2`.
-        :n2: Defaults to 0. Unit in nm\ :sup:`4`.
-        :k0: Defaults to 0.
-        :k1: Defaults to 0. Unit in nm\ :sup:`2`.
-        :k2: Defaults to 0. Unit in nm\ :sup:`4`.
-
-    Repeated parameters:
-        --
-
-    Output:
-        .. math::
-            \varepsilon^2(\lambda) =
-            \boldsymbol{n_0} + 100  \boldsymbol{n_1}/\lambda^2 + 10^7 \boldsymbol{n_2}/\lambda^4
-            + i (\boldsymbol{k_0} + 100 \boldsymbol{k_1}/\lambda^2
-            + 10^7 \boldsymbol{k_2}/\lambda^4)
-    """
-
-    single_params_template = {"n0": 1.5, "n1": 0, "n2": 0, "k0": 0, "k1": 0, "k2": 0}
-    rep_params_template = {}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        refr_index = (
-            self.single_params.get("n0")
-            + 1e2 * self.single_params.get("n1") / lbda**2
-            + 1e7 * self.single_params.get("n2") / lbda**4
-            + 1j
-            * (
-                self.single_params.get("k0")
-                + 1e2 * self.single_params.get("k1") / lbda**2
-                + 1e7 * self.single_params.get("k2") / lbda**4
-            )
-        )
-        return refr_index**2
-
-
-class Sellmeier(Dispersion):
-    r"""Sellmeier dispersion.
-
-    Single parameters:
-        --
-
-    Repeated parameters:
-        :A: Coefficient for n\ :sup:`2` contribution. Defaults to 0.
-        :B: Resonance wavelength. Defaults to 0. Unit in µm\ :sup:`-2`.
-
-    Output:
-        .. math::
-            \varepsilon(\lambda) = 1 + \sum_j \boldsymbol{A}_j
-            \cdot \lambda^2 /(\lambda^2 - \boldsymbol{B}_j)
-
-        With :math:`j` as the index of the respective oscillator.
-    """
-
-    single_params_template = {}
-    rep_params_template = {"A": 0, "B": 0}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        lbda = lbda / 1e3
-        return 1 + sum(
-            c.get("A") * lbda**2 / (lbda**2 - c.get("B")) for c in self.rep_params
-        )
-
-
-class DrudeEnergy(Dispersion):
-    r"""Drude dispersion model with parameters in units of energy.
-    Drude models in the literature typically contain an additional epsilon infinity value.
-    Use `EpsilonInf` to add this parameter or simply add a number, e.g. DrudeEnergy() + 2, where
-    2 is the value of epsilon infinity.
-
-    Single parameters:
-        :A: Amplitude of Drude oscillator. Defaults to 0. Unit in eV\ :sup:`2`
-        :gamma: Broadening of Drude oscillator. Defaults to 0. Unit in eV.
-
-    Repeated parameters:
-        --
-
-    Output:
-        .. math::
-            \varepsilon(E)
-            = \boldsymbol{A} / (E^2 - i \cdot \boldsymbol{gamma} \cdot E)
-    """
-
-    single_params_template = {"A": 0, "gamma": 0}
-    rep_params_template = {}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        energy = conversion_wavelength_energy(lbda)
-        return self.single_params.get("A") / (
-            energy**2 - 1j * self.single_params.get("gamma") * energy
-        )
-
-
-class DrudeResistivity(Dispersion):
-    r"""Drude dispersion model with resistivity based parameters.
-    Drude models in the literature typically contain an additional epsilon infinity value.
-    Use `EpsilonInf` to add this parameter or simply do DrudeEnergy() + eps_inf.
-
-    Single parameters:
-        :rho_opt: Optical resistivity. Defaults to 1. Unit in Ω-cm.
-        :tau: Mean scattering time. Defaults to 1. Unit in s.
-
-    Repeated parameters:
-        --
-
-    Output:
-
-        .. math::
-            \varepsilon(E) = \hbar / (\varepsilon_0  \cdot
-            \boldsymbol{rho\_opt} \cdot \boldsymbol{tau} \cdot E^2
-            - i \cdot \hbar \cdot E)
-
-       where :math:`\hbar` is the planck constant divided by :math:`2\pi`
-       and :math:`\varepsilon_0` is the vacuum dielectric permittivity.
-    """
-
-    single_params_template = {"rho_opt": 1, "tau": 1}
-    rep_params_template = {}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        energy = conversion_wavelength_energy(lbda)
-        hbar = sc.value("Planck constant in eV/Hz") / 2 / np.pi
-        eps0 = sc.value("vacuum electric permittivity") * 1e-2
-
-        return hbar**2 / (
-            eps0
-            * self.single_params.get("rho_opt")
-            * (self.single_params.get("tau") * energy**2 - 1j * hbar * energy)
-        )
-
-
-class LorentzLambda(Dispersion):
-    r"""Lorentz dispersion law with parameters in units of wavelengths.
-
-    Single parameters:
-        --
-
-    Repeated parameters:
-        :A: Amplitude of the oscillator. Defaults to 1.
-        :lambda_r: Resonance wavelength. Defaults to 0. Unit in nm.
-        :gamma: Broadening of the oscillator. Defaults to 0. Unit in nm.
-
-    Output:
-
-        .. math::
-            \varepsilon(\lambda) = 1 + \sum_j \boldsymbol{A}_j
-            \cdot \lambda^2 / (\lambda^2 - \boldsymbol{lambda\_r}_j^2
-            + i \cdot \boldsymbol{gamma}_j \cdot \lambda)
-
-        The summation index :math:`j` refers to the respective oscillator.
-    """
-
-    single_params_template = {}
-    rep_params_template = {"A": 1, "lambda_r": 0, "gamma": 0}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        return 1 + sum(
-            c.get("A")
-            * lbda**2
-            / (lbda**2 - c.get("lambda_r") ** 2 - 1j * c.get("gamma") * lbda)
-            for c in self.rep_params
-        )
-
-
-class LorentzEnergy(Dispersion):
-    r"""Lorentz dispersion law with parameters in units of energy.
-
-    Single parameters:
-        --
-
-    Repeated parameters:
-        :A: Amplitude of the oscillator. Defaults to 1.
-        :E: Resonance energy. Defaults 0. Unit in eV.
-        :gamma: Broadening of the oscillator. Defaults to 0. Unit in eV.
-
-    Output:
-        .. math::
-            \varepsilon(E) = 1 + \sum_j \boldsymbol{A}_j / \left(E^2-\boldsymbol{E}_j^2
-            + i \cdot \boldsymbol{gamma}_j \cdot E\right)
-
-        With :math:`j`  as the index for the respective oscillator.
-    """
-
-    single_params_template = {}
-    rep_params_template = {"A": 1, "E": 0, "gamma": 0}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        energy = conversion_wavelength_energy(lbda)
-        return 1 + sum(
-            c.get("A") / (c.get("E") ** 2 - energy**2 - 1j * c.get("gamma") * energy)
-            for c in self.rep_params
-        )
-
-
-class Gaussian(Dispersion):
-    r"""Gauss dispersion law.
-
-    Single parameters:
-        --
-
-    Repeated parameters:
-        :A: Amplitude of the oscillator. Defaults to 1.
-        :E: Central energy. Defaults to 1. Unit in eV.
-        :sigma: Broadening of the Gaussian. Defaults to 1. Unit in eV.
-
-    Output:
-
-        .. math::
-            \varepsilon(E) = \sum_j & \; 2 \cdot \boldsymbol{A}_j / \sqrt{π} \cdot
-                    (D\left(2 \cdot \sqrt{2 \cdot \ln(2)} \cdot (E + \boldsymbol{E}_j)
-                    / \boldsymbol{sigma}_j\right) \\
-                    &- D\left(2 \cdot \sqrt{2 \cdot \ln(2)} \cdot (E - \boldsymbol{E}_j)
-                    / \boldsymbol{sigma}_j\right) \\
-                    &+ i \cdot \Bigl(\boldsymbol{A}_j \cdot \exp\left(-(4 \cdot \ln(2) \cdot
-                    (E - \boldsymbol{E}_j)/ \boldsymbol{sigma}_j\right)^2 \\
-                    &- \boldsymbol{A}_j \cdot \exp\left(-(4 \cdot ln(2) \cdot
-                    (E + \boldsymbol{E}_j)/ \boldsymbol{sigma}_j\right)^2\Bigr)
-
-        D is the
-        `Dawson function
-        <https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.dawsn.html>`_.
-        The summation index :math:`j` is the index of the respective oscillator.
-
-    References:
-        * De Sousa Meneses, Malki, Echegut, J. Non-Cryst. Solids 351, 769-776 (2006)
-        * Peiponen, Vartiainen, Phys. Rev. B. 44, 8301 (1991)
-        * Fujiwara, Collins, Spectroscopic Ellipsometry for Photovoltaics Volume 1,
-          Springer International Publishing AG, 2018, p. 137
-    """
-
-    single_params_template = {}
-    rep_params_template = {"A": 1, "E": 1, "sigma": 1}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        energy = conversion_wavelength_energy(lbda)
-        ftos = 2 * sqrt(np.log(2))
-        return sum(
-            2
-            * c.get("A")
-            / sqrt(np.pi)
-            * (
-                dawsn(ftos * (energy + c.get("E")) / c.get("sigma"))
-                - dawsn(ftos * (energy - c.get("E")) / c.get("sigma"))
-            )
-            + 1j
-            * (
-                c.get("A")
-                * np.exp(-((ftos * (energy - c.get("E")) / c.get("sigma")) ** 2))
-                - c.get("A")
-                * np.exp(-((ftos * (energy + c.get("E")) / c.get("sigma")) ** 2))
-            )
-            for c in self.rep_params
-        )
-
-
-class TaucLorentz(Dispersion):
-    """Tauc-Lorentz dispersion law. Model by Jellison and Modine.
-
-    Single parameters:
-        :Eg: Bandgap energy (eV). Defaults to 1.
-
-    Repeated parameters:
-        :A: Strength of the absorption. Typically 10 < A < 200. Defaults to 20.
-        :E: Lorentz resonance energy (eV). Always keep E > Eg!!. Defaults to 1.5.
-        :C: Lorentz broadening (eV). Typically 0 < Ci < 10. Defaults to 1.
-
-    Output:
-        The Tauc lorentz dispersion. Please refer to the references for a full formula.
-
-    References:
-        * G.E. Jellision and F.A. Modine, Appl. Phys. Lett. 69 (3), 371-374 (1996)
-        * Erratum, G.E. Jellison and F.A. Modine, Appl. Phys. Lett 69 (14), 2137 (1996)
-        * H. Chen, W.Z. Shen, Eur. Phys. J. B. 43, 503-507 (2005)
-    """
-
-    single_params_template = {"Eg": 1}
-    rep_params_template = {"A": 20, "E": 1.5, "C": 1}
-
-    @staticmethod
-    def eps1(E, Eg, Ai, Ei, Ci):
-        gamma2 = sqrt(Ei**2 - Ci**2 / 2) ** 2
-        alpha = sqrt(4 * Ei**2 - Ci**2)
-        aL = (
-            (Eg**2 - Ei**2) * E**2
-            + Eg**2 * Ci**2
-            - Ei**2 * (Ei**2 + 3 * Eg**2)
-        )
-        aA = (E**2 - Ei**2) * (Ei**2 + Eg**2) + Eg**2 * Ci**2
-        zeta4 = (E**2 - gamma2) ** 2 + alpha**2 * Ci**2 / 4
-
-        # fmt: off
-        return (
-            Ai*Ci*aL/2.0/np.pi/zeta4/alpha/Ei*np.log((Ei**2 + Eg**2 + alpha*Eg)/(Ei**2 + Eg**2 - alpha*Eg)) - \
-            Ai*aA/np.pi/zeta4/Ei*(np.pi - np.arctan((2.0*Eg + alpha)/Ci) + np.arctan((alpha - 2.0*Eg)/Ci)) + \
-            2.0*Ai*Ei*Eg/np.pi/zeta4/alpha*(E**2 - gamma2)*(np.pi + 2.0*np.arctan(2.0/alpha/Ci*(gamma2 - Eg**2))) - \
-            Ai*Ei*Ci*(E**2 + Eg**2)/np.pi/zeta4/E*np.log(abs(E - Eg)/(E + Eg)) + \
-            2.0*Ai*Ei*Ci*Eg/np.pi/zeta4 * \
-            np.log(abs(E - Eg) * (E + Eg) / sqrt((Ei**2 - Eg**2)**2 + Eg**2 * Ci**2))
-        )
-        # fmt: on
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        energy = conversion_wavelength_energy(lbda)
-        energy_g = self.single_params.get("Eg")
-        return sum(
-            (
-                1j
-                * (
-                    c.get("A")
-                    * c.get("E")
-                    * c.get("C")
-                    * (energy - energy_g) ** 2
-                    / (
-                        (energy**2 - c.get("E") ** 2) ** 2
-                        + c.get("C") ** 2 * energy**2
-                    )
-                    / energy
-                )
-                * np.heaviside(energy - energy_g, 0)
-                + self.eps1(energy, energy_g, c.get("A"), c.get("E"), c.get("C"))
-            )
-            for c in self.rep_params
-        )
-
-
-class Tanguy(Dispersion):
-    r"""Fractional dimensional Tanguy model.
-    This model is an analytical expression of Wannier excitons, including
-    bound and unbound states.
-
-    Single parameters:
-          :A: Amplitude (eV). Defaults to 1.
-          :d: Dimensionality 1 < d <= 3. Defaults to 3.
-          :gamma: Excitonic broadening (eV). Defaults to 0.1.
-          :R: Excitonic binding energy (eV). Defaults to 0.1.
-          :Eg: Optical band gap energy (eV). Defaults to 1.
-          :a: Sellmeier coefficient for background dielectric constant (eV²).
-            Defaults to 0.
-          :b: Sellmeier coefficient for background dielectric constant (eV²).
-            Defaults to 0.
-
-    Repeated parameters.
-        --
-
-    Output:
-        The Tanguy dispersion. Since the formula is rather long it is not written here.
-        Please refer to the references for a full formula.
-
-    References:
-        * C. Tanguy, Phys. Rev. Lett. 75, 4090 (1995). Errata, Phys. Rev. Lett. 76, 716 (1996).
-        * C. Tanguy, Phys. Rev. B. 60. 10660 (1990).
-    """
-
-    single_params_template = {
-        "A": 1,
-        "d": 3,
-        "gamma": 0.1,
-        "R": 0.1,
-        "Eg": 1,
-        "a": 0,
-        "b": 0,
-    }
-    rep_params_template = {}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        E = conversion_wavelength_energy(lbda)
-        A = self.single_params.get("A")
-        d = self.single_params.get("d")
-        gam = self.single_params.get("gamma")
-        R = self.single_params.get("R")
-        Eg = self.single_params.get("Eg")
-        a = self.single_params.get("a")
-        b = self.single_params.get("b")
-
-        return (
-            1
-            + a / (b - E**2)
-            + A
-            * R ** (d / 2 - 1)
-            / (E + 1j * gam) ** 2
-            * (
-                Tanguy.g(Tanguy.xsi(E + 1j * gam, R, Eg), d)
-                + Tanguy.g(Tanguy.xsi(-E - 1j * gam, R, Eg), d)
-                - 2 * Tanguy.g(Tanguy.xsi(E * 0, R, Eg), d)
-            )
-        )
-
-    @staticmethod
-    def xsi(z, R, Eg):
-        return sqrt(R / (Eg - z))
-
-    @staticmethod
-    def g(xsi, d):
-        if d == 2:
-            return 2 * np.log(xsi) - 2 * digamma(0.5 - xsi)
-        if d == 3:
-            return 2 * np.log(xsi) - 2 * digamma(1 - xsi) - 1 / xsi
-
-        D = d - 1
-        return (
-            2
-            * np.pi
-            * gamma(D / 2 + xsi)
-            / gamma(D / 2) ** 2
-            / gamma(1 - D / 2 + xsi)
-            / xsi ** (d - 2)
-            * (1 / np.tan(np.pi * (D / 2 - xsi)) - 1 / np.tan(np.pi * D))
-        )
-
-
-class Poles(Dispersion):
-    r"""Dispersion law for an UV and IR pole,
-    i.e. Lorentz oscillators outside the fitting spectral range and zero broadening.
-
-    Single parameters:
-        :A_ir: IR Pole amplitude. Defaults to 1. Unit in eV\ :sup:`2`.
-        :A_uv: UV Pole amplitude. Defaults to 1. Unit in eV\ :sup:`2`.
-        :E_uv: UV Pole energy. Defaults to 6. Unit in eV.
-
-    Repeated parameters:
-        --
-
-    Output:
-        .. math::
-                \varepsilon(E) = \boldsymbol{A\_ir} / E^2
-                + \boldsymbol{A\_uv} / (\boldsymbol{E\_uv}^2 - E^2)
-    """
-
-    single_params_template = {"A_ir": 1, "A_uv": 1, "E_uv": 6}
-    rep_params_template = {}
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        energy = conversion_wavelength_energy(lbda)
-        return self.single_params.get("A_ir") / energy**2 + self.single_params.get(
-            "A_uv"
-        ) / (self.single_params.get("E_uv") ** 2 - energy**2)
-
-
-class Table(Dispersion):
-    """Dispersion specified by a table of wavelengths (nm) and refractive index values.
-    Please not that this model will produce errors for wavelengths outside the provided
-    wavelength range.
-
-    Single parameters:
-        :lbda (list): Wavelengths in nm. Defaults to np.linspace(0, 3000, 1000).
-        :epsilon: Complex refractive index values in the convention n + ik.
-            Defaults to np.ones(1000).
-
-    Repeated parameters:
-        --
-
-    Output:
-        The interpolation in the given wavelength range.
-    """
-
-    single_params_template = {"lbda": np.linspace(0, 3000, 1000), "n": np.ones(1000)}
-    rep_params_template = {}
-
-    def __init__(self, *args, **kwargs) -> None:
-        super().__init__(*args, **kwargs)
-
-        if len(self.single_params.get("lbda")) == 0:
-            raise InvalidParameters("Wavelength array cannot be of length zero.")
-
-        if len(self.single_params.get("n")) != len(self.single_params.get("lbda")):
-            raise InvalidParameters(
-                "Wavelength and refractive index arrays must have the same length."
-            )
-
-        self.interpolation = scipy.interpolate.interp1d(
-            self.single_params.get("lbda"),
-            self.single_params.get("n") ** 2,
-            kind="cubic",
-        )
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        return self.interpolation(lbda)
-
-
-class TableEpsilon(Dispersion):
-    r"""Dispersion specified by a table of wavelengths (nm) and dielectric function values.
-    Please not that this model will produce errors for wavelengths outside the provided
-    wavelength range.
-
-    Single parameters:
-        :lbda (list): Wavelengths in nm. Defaults to np.linspace(0, 3000, 1000).
-        :epsilon: Complex dielectric function values in the convention ε1 + iε2.
-            Defaults to np.ones(1000).
-
-    Repeated parameters:
-        --
-
-    Output:
-        The interpolation in the given wavelength range.
-    """
-
-    single_params_template = {
-        "lbda": np.linspace(0, 3000, 1000),
-        "epsilon": np.ones(1000),
-    }
-    rep_params_template = {}
-
-    def __init__(self, *args, **kwargs) -> None:
-        super().__init__(*args, **kwargs)
-
-        if len(self.single_params.get("lbda")) == 0:
-            raise InvalidParameters("Wavelength array cannot be of length zero.")
-
-        if len(self.single_params.get("epsilon")) != len(
-            self.single_params.get("lbda")
-        ):
-            raise InvalidParameters(
-                "Wavelength and epsilon arrays must have the same length."
-            )
-
-        self.interpolation = scipy.interpolate.interp1d(
-            self.single_params.get("lbda"),
-            self.single_params.get("epsilon"),
-            kind="cubic",
-        )
-
-    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
-        return self.interpolation(lbda)
diff --git a/src/elli/dispersions/drude_energy.py b/src/elli/dispersions/drude_energy.py
new file mode 100644
index 00000000..498d180d
--- /dev/null
+++ b/src/elli/dispersions/drude_energy.py
@@ -0,0 +1,35 @@
+# Encoding: utf-8
+"""Drude dispersion model with parameters in units of energy."""
+import numpy.typing as npt
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class DrudeEnergy(Dispersion):
+    r"""Drude dispersion model with parameters in units of energy.
+    Drude models in the literature typically contain an additional epsilon infinity value.
+    Use `EpsilonInf` to add this parameter or simply add a number, e.g. DrudeEnergy() + 2, where
+    2 is the value of epsilon infinity.
+
+    Single parameters:
+        :A: Amplitude of Drude oscillator. Defaults to 0. Unit in eV\ :sup:`2`
+        :gamma: Broadening of Drude oscillator. Defaults to 0. Unit in eV.
+
+    Repeated parameters:
+        --
+
+    Output:
+        .. math::
+            \varepsilon(E)
+            = \boldsymbol{A} / (E^2 - i \cdot \boldsymbol{gamma} \cdot E)
+    """
+
+    single_params_template = {"A": 0, "gamma": 0}
+    rep_params_template = {}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        energy = conversion_wavelength_energy(lbda)
+        return self.single_params.get("A") / (
+            energy**2 - 1j * self.single_params.get("gamma") * energy
+        )
diff --git a/src/elli/dispersions/drude_resistivity.py b/src/elli/dispersions/drude_resistivity.py
new file mode 100644
index 00000000..d28bc179
--- /dev/null
+++ b/src/elli/dispersions/drude_resistivity.py
@@ -0,0 +1,46 @@
+# Encoding: utf-8
+"""Drude dispersion model with resistivity based parameters."""
+import numpy as np
+import numpy.typing as npt
+import scipy.constants as sc
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class DrudeResistivity(Dispersion):
+    r"""Drude dispersion model with resistivity based parameters.
+    Drude models in the literature typically contain an additional epsilon infinity value.
+    Use `EpsilonInf` to add this parameter or simply do DrudeEnergy() + eps_inf.
+
+    Single parameters:
+        :rho_opt: Optical resistivity. Defaults to 1. Unit in Ω-cm.
+        :tau: Mean scattering time. Defaults to 1. Unit in s.
+
+    Repeated parameters:
+        --
+
+    Output:
+
+        .. math::
+            \varepsilon(E) = \hbar / (\varepsilon_0  \cdot
+            \boldsymbol{rho\_opt} \cdot \boldsymbol{tau} \cdot E^2
+            - i \cdot \hbar \cdot E)
+
+       where :math:`\hbar` is the planck constant divided by :math:`2\pi`
+       and :math:`\varepsilon_0` is the vacuum dielectric permittivity.
+    """
+
+    single_params_template = {"rho_opt": 1, "tau": 1}
+    rep_params_template = {}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        energy = conversion_wavelength_energy(lbda)
+        hbar = sc.value("Planck constant in eV/Hz") / 2 / np.pi
+        eps0 = sc.value("vacuum electric permittivity") * 1e-2
+
+        return hbar**2 / (
+            eps0
+            * self.single_params.get("rho_opt")
+            * (self.single_params.get("tau") * energy**2 - 1j * hbar * energy)
+        )
diff --git a/src/elli/dispersions/epsilon_inf.py b/src/elli/dispersions/epsilon_inf.py
new file mode 100644
index 00000000..c33eecef
--- /dev/null
+++ b/src/elli/dispersions/epsilon_inf.py
@@ -0,0 +1,26 @@
+# Encoding: utf-8
+"""Constant epsilon infinity."""
+import numpy.typing as npt
+
+from .base_dispersion import Dispersion
+
+
+class EpsilonInf(Dispersion):
+    r"""Constant epsilon infinity.
+
+    Single parameters:
+        :eps: Constant value for the constant epsilon. Defaults to 1.
+
+    Repeated parameters:
+        --
+
+    Output:
+        .. math::
+            \varepsilon(\lambda) = \textbf{eps}
+    """
+
+    single_params_template = {"eps": 1}
+    rep_params_template = {}
+
+    def dielectric_function(self, _: npt.ArrayLike) -> npt.NDArray:
+        return self.single_params.get("eps")
diff --git a/src/elli/dispersions/gaussian.py b/src/elli/dispersions/gaussian.py
new file mode 100644
index 00000000..73b5b71a
--- /dev/null
+++ b/src/elli/dispersions/gaussian.py
@@ -0,0 +1,72 @@
+# Encoding: utf-8
+"""Dispersion law with gaussian oscillators."""
+import numpy as np
+import numpy.typing as npt
+from numpy.lib.scimath import sqrt
+
+# pylint: disable=no-name-in-module
+from scipy.special import dawsn
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class Gaussian(Dispersion):
+    r"""Dispersion law with gaussian oscillators.
+
+    Single parameters:
+        --
+
+    Repeated parameters:
+        :A: Amplitude of the oscillator. Defaults to 1.
+        :E: Central energy. Defaults to 1. Unit in eV.
+        :sigma: Broadening of the Gaussian. Defaults to 1. Unit in eV.
+
+    Output:
+
+        .. math::
+            \varepsilon(E) = \sum_j & \; 2 \cdot \boldsymbol{A}_j / \sqrt{π} \cdot
+                    (D\left(2 \cdot \sqrt{2 \cdot \ln(2)} \cdot (E + \boldsymbol{E}_j)
+                    / \boldsymbol{sigma}_j\right) \\
+                    &- D\left(2 \cdot \sqrt{2 \cdot \ln(2)} \cdot (E - \boldsymbol{E}_j)
+                    / \boldsymbol{sigma}_j\right) \\
+                    &+ i \cdot \Bigl(\boldsymbol{A}_j \cdot \exp\left(-(4 \cdot \ln(2) \cdot
+                    (E - \boldsymbol{E}_j)/ \boldsymbol{sigma}_j\right)^2 \\
+                    &- \boldsymbol{A}_j \cdot \exp\left(-(4 \cdot ln(2) \cdot
+                    (E + \boldsymbol{E}_j)/ \boldsymbol{sigma}_j\right)^2\Bigr)
+
+        D is the
+        `Dawson function
+        <https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.dawsn.html>`_.
+        The summation index :math:`j` is the index of the respective oscillator.
+
+    References:
+        * De Sousa Meneses, Malki, Echegut, J. Non-Cryst. Solids 351, 769-776 (2006)
+        * Peiponen, Vartiainen, Phys. Rev. B. 44, 8301 (1991)
+        * Fujiwara, Collins, Spectroscopic Ellipsometry for Photovoltaics Volume 1,
+          Springer International Publishing AG, 2018, p. 137
+    """
+
+    single_params_template = {}
+    rep_params_template = {"A": 1, "E": 1, "sigma": 1}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        energy = conversion_wavelength_energy(lbda)
+        ftos = 2 * sqrt(np.log(2))
+        return sum(
+            2
+            * c.get("A")
+            / sqrt(np.pi)
+            * (
+                dawsn(ftos * (energy + c.get("E")) / c.get("sigma"))
+                - dawsn(ftos * (energy - c.get("E")) / c.get("sigma"))
+            )
+            + 1j
+            * (
+                c.get("A")
+                * np.exp(-((ftos * (energy - c.get("E")) / c.get("sigma")) ** 2))
+                - c.get("A")
+                * np.exp(-((ftos * (energy + c.get("E")) / c.get("sigma")) ** 2))
+            )
+            for c in self.rep_params
+        )
diff --git a/src/elli/dispersions/lorentz_energy.py b/src/elli/dispersions/lorentz_energy.py
new file mode 100644
index 00000000..29eff9c6
--- /dev/null
+++ b/src/elli/dispersions/lorentz_energy.py
@@ -0,0 +1,36 @@
+# Encoding: utf-8
+"""Lorentz dispersion law with parameters in units of energy."""
+import numpy.typing as npt
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class LorentzEnergy(Dispersion):
+    r"""Lorentz dispersion law with parameters in units of energy.
+
+    Single parameters:
+        --
+
+    Repeated parameters:
+        :A: Amplitude of the oscillator. Defaults to 1.
+        :E: Resonance energy. Defaults 0. Unit in eV.
+        :gamma: Broadening of the oscillator. Defaults to 0. Unit in eV.
+
+    Output:
+        .. math::
+            \varepsilon(E) = 1 + \sum_j \boldsymbol{A}_j / \left(E^2-\boldsymbol{E}_j^2
+            + i \cdot \boldsymbol{gamma}_j \cdot E\right)
+
+        With :math:`j`  as the index for the respective oscillator.
+    """
+
+    single_params_template = {}
+    rep_params_template = {"A": 1, "E": 0, "gamma": 0}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        energy = conversion_wavelength_energy(lbda)
+        return 1 + sum(
+            c.get("A") / (c.get("E") ** 2 - energy**2 - 1j * c.get("gamma") * energy)
+            for c in self.rep_params
+        )
diff --git a/src/elli/dispersions/lorentz_lambda.py b/src/elli/dispersions/lorentz_lambda.py
new file mode 100644
index 00000000..767a347e
--- /dev/null
+++ b/src/elli/dispersions/lorentz_lambda.py
@@ -0,0 +1,38 @@
+# Encoding: utf-8
+"""Lorentz dispersion law with parameters in units of wavelengths."""
+import numpy.typing as npt
+
+from .base_dispersion import Dispersion
+
+
+class LorentzLambda(Dispersion):
+    r"""Lorentz dispersion law with parameters in units of wavelengths.
+
+    Single parameters:
+        --
+
+    Repeated parameters:
+        :A: Amplitude of the oscillator. Defaults to 1.
+        :lambda_r: Resonance wavelength. Defaults to 0. Unit in nm.
+        :gamma: Broadening of the oscillator. Defaults to 0. Unit in nm.
+
+    Output:
+
+        .. math::
+            \varepsilon(\lambda) = 1 + \sum_j \boldsymbol{A}_j
+            \cdot \lambda^2 / (\lambda^2 - \boldsymbol{lambda\_r}_j^2
+            + i \cdot \boldsymbol{gamma}_j \cdot \lambda)
+
+        The summation index :math:`j` refers to the respective oscillator.
+    """
+
+    single_params_template = {}
+    rep_params_template = {"A": 1, "lambda_r": 0, "gamma": 0}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        return 1 + sum(
+            c.get("A")
+            * lbda**2
+            / (lbda**2 - c.get("lambda_r") ** 2 - 1j * c.get("gamma") * lbda)
+            for c in self.rep_params
+        )
diff --git a/src/elli/dispersions/poles.py b/src/elli/dispersions/poles.py
new file mode 100644
index 00000000..a4b278d7
--- /dev/null
+++ b/src/elli/dispersions/poles.py
@@ -0,0 +1,34 @@
+# Encoding: utf-8
+"""Dispersion law for an UV and IR pole."""
+import numpy.typing as npt
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class Poles(Dispersion):
+    r"""Dispersion law for an UV and IR pole,
+    i.e. Lorentz oscillators outside the fitting spectral range and zero broadening.
+
+    Single parameters:
+        :A_ir: IR Pole amplitude. Defaults to 1. Unit in eV\ :sup:`2`.
+        :A_uv: UV Pole amplitude. Defaults to 1. Unit in eV\ :sup:`2`.
+        :E_uv: UV Pole energy. Defaults to 6. Unit in eV.
+
+    Repeated parameters:
+        --
+
+    Output:
+        .. math::
+                \varepsilon(E) = \boldsymbol{A\_ir} / E^2
+                + \boldsymbol{A\_uv} / (\boldsymbol{E\_uv}^2 - E^2)
+    """
+
+    single_params_template = {"A_ir": 1, "A_uv": 1, "E_uv": 6}
+    rep_params_template = {}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        energy = conversion_wavelength_energy(lbda)
+        return self.single_params.get("A_ir") / energy**2 + self.single_params.get(
+            "A_uv"
+        ) / (self.single_params.get("E_uv") ** 2 - energy**2)
diff --git a/src/elli/dispersions/sellmeier.py b/src/elli/dispersions/sellmeier.py
new file mode 100644
index 00000000..e95c798c
--- /dev/null
+++ b/src/elli/dispersions/sellmeier.py
@@ -0,0 +1,33 @@
+# Encoding: utf-8
+"""Sellmeier dispersion."""
+import numpy.typing as npt
+
+from .base_dispersion import Dispersion
+
+
+class Sellmeier(Dispersion):
+    r"""Sellmeier dispersion.
+
+    Single parameters:
+        --
+
+    Repeated parameters:
+        :A: Coefficient for n\ :sup:`2` contribution. Defaults to 0.
+        :B: Resonance wavelength. Defaults to 0. Unit in µm\ :sup:`-2`.
+
+    Output:
+        .. math::
+            \varepsilon(\lambda) = 1 + \sum_j \boldsymbol{A}_j
+            \cdot \lambda^2 /(\lambda^2 - \boldsymbol{B}_j)
+
+        With :math:`j` as the index of the respective oscillator.
+    """
+
+    single_params_template = {}
+    rep_params_template = {"A": 0, "B": 0}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        lbda = lbda / 1e3
+        return 1 + sum(
+            c.get("A") * lbda**2 / (lbda**2 - c.get("B")) for c in self.rep_params
+        )
diff --git a/src/elli/dispersions/table_epsilon.py b/src/elli/dispersions/table_epsilon.py
new file mode 100644
index 00000000..5f8ea62f
--- /dev/null
+++ b/src/elli/dispersions/table_epsilon.py
@@ -0,0 +1,53 @@
+# Encoding: utf-8
+"""Dispersion specified by a table of wavelengths (nm) and dielectric function values."""
+import numpy as np
+import numpy.typing as npt
+import scipy.interpolate
+
+from .base_dispersion import Dispersion, InvalidParameters
+
+
+class TableEpsilon(Dispersion):
+    r"""Dispersion specified by a table of wavelengths (nm) and dielectric function values.
+    Please not that this model will produce errors for wavelengths outside the provided
+    wavelength range.
+
+    Single parameters:
+        :lbda (list): Wavelengths in nm. Defaults to np.linspace(0, 3000, 1000).
+        :epsilon: Complex dielectric function values in the convention ε1 + iε2.
+            Defaults to np.ones(1000).
+
+    Repeated parameters:
+        --
+
+    Output:
+        The interpolation in the given wavelength range.
+    """
+
+    single_params_template = {
+        "lbda": np.linspace(0, 3000, 1000),
+        "epsilon": np.ones(1000),
+    }
+    rep_params_template = {}
+
+    def __init__(self, *args, **kwargs) -> None:
+        super().__init__(*args, **kwargs)
+
+        if len(self.single_params.get("lbda")) == 0:
+            raise InvalidParameters("Wavelength array cannot be of length zero.")
+
+        if len(self.single_params.get("epsilon")) != len(
+            self.single_params.get("lbda")
+        ):
+            raise InvalidParameters(
+                "Wavelength and epsilon arrays must have the same length."
+            )
+
+        self.interpolation = scipy.interpolate.interp1d(
+            self.single_params.get("lbda"),
+            self.single_params.get("epsilon"),
+            kind="cubic",
+        )
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        return self.interpolation(lbda)
diff --git a/src/elli/dispersions/table_index.py b/src/elli/dispersions/table_index.py
new file mode 100644
index 00000000..217f82af
--- /dev/null
+++ b/src/elli/dispersions/table_index.py
@@ -0,0 +1,48 @@
+# Encoding: utf-8
+"""Dispersion specified by a table of wavelengths (nm) and refractive index values."""
+import numpy as np
+import numpy.typing as npt
+import scipy.interpolate
+
+from .base_dispersion import Dispersion, InvalidParameters
+
+
+class Table(Dispersion):
+    """Dispersion specified by a table of wavelengths (nm) and refractive index values.
+    Please not that this model will produce errors for wavelengths outside the provided
+    wavelength range.
+
+    Single parameters:
+        :lbda (list): Wavelengths in nm. Defaults to np.linspace(0, 3000, 1000).
+        :epsilon: Complex refractive index values in the convention n + ik.
+            Defaults to np.ones(1000).
+
+    Repeated parameters:
+        --
+
+    Output:
+        The interpolation in the given wavelength range.
+    """
+
+    single_params_template = {"lbda": np.linspace(0, 3000, 1000), "n": np.ones(1000)}
+    rep_params_template = {}
+
+    def __init__(self, *args, **kwargs) -> None:
+        super().__init__(*args, **kwargs)
+
+        if len(self.single_params.get("lbda")) == 0:
+            raise InvalidParameters("Wavelength array cannot be of length zero.")
+
+        if len(self.single_params.get("n")) != len(self.single_params.get("lbda")):
+            raise InvalidParameters(
+                "Wavelength and refractive index arrays must have the same length."
+            )
+
+        self.interpolation = scipy.interpolate.interp1d(
+            self.single_params.get("lbda"),
+            self.single_params.get("n") ** 2,
+            kind="cubic",
+        )
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        return self.interpolation(lbda)
diff --git a/src/elli/dispersions/table_spectraray.py b/src/elli/dispersions/table_spectraray.py
new file mode 100644
index 00000000..7bb13036
--- /dev/null
+++ b/src/elli/dispersions/table_spectraray.py
@@ -0,0 +1,65 @@
+# Encoding: utf-8
+"""Helper class to load spectraray's tabulated dielectric functions."""
+import pandas as pd
+
+from ..utils import conversion_wavelength_energy
+from .table_epsilon import TableEpsilon
+
+
+class TableSpectraRay:
+    """Helper class to load spectraray's tabulated dielectric functions."""
+
+    def __init__(self, path: str) -> None:
+        """
+        Args:
+            path (str): Defines the folder where the Spectraray files are saved.
+        """
+        self.spectraray_path = path
+
+    def load_dispersion_table(self, fname: str) -> TableEpsilon:
+        """Load a dispersion table from a ascii file
+        in the spectraray materials ascii format.
+        This only accounts for tabulated dielectric function data.
+        Spectraray also stores dispersion data in other formats,
+        but this function is not able to read these other formats.
+
+        Args:
+            fname (str): The filename of the spectraray ascii file.
+
+        Returns:
+            TableEpsilon: A dispersion class containing the tabulated data.
+        """
+        start = 0
+        stop = 0
+        with open(self.spectraray_path + fname, "r", encoding="utf8") as file:
+            line = file.readline()
+            cnt = 0
+            while line:
+                if line.strip() == "Begin of array":
+                    start = cnt + 1
+                if line.strip() == "End of array":
+                    stop = cnt
+                line = file.readline()
+                cnt += 1
+
+                if line.startswith("Units="):
+                    x_unit = line.split("=")[1].split(",")[0]
+
+        df = pd.read_csv(
+            self.spectraray_path + fname,
+            delim_whitespace=True,
+            skiprows=start,
+            nrows=stop - start,
+            index_col=0,
+            usecols=[0, 1, 2],
+            names=[x_unit, "ϵ1", "ϵ2"],
+        )
+
+        if x_unit == "Wavelength":
+            return TableEpsilon(
+                lbda=df.index, epsilon=df.loc[:, "ϵ1"] + 1j * df.iloc[:, "ϵ2"]
+            )
+        return TableEpsilon(
+            lbda=conversion_wavelength_energy(df.index),
+            epsilon=df.loc[:, "ϵ1"] + 1j * df.loc[:, "ϵ2"],
+        )
diff --git a/src/elli/dispersions/tanguy.py b/src/elli/dispersions/tanguy.py
new file mode 100644
index 00000000..d09ec445
--- /dev/null
+++ b/src/elli/dispersions/tanguy.py
@@ -0,0 +1,96 @@
+# Encoding: utf-8
+"""Fractional dimensional Tanguy model."""
+import numpy as np
+import numpy.typing as npt
+from numpy.lib.scimath import sqrt
+
+# pylint: disable=no-name-in-module
+from scipy.special import digamma, gamma
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class Tanguy(Dispersion):
+    r"""Fractional dimensional Tanguy model.
+    This model is an analytical expression of Wannier excitons, including
+    bound and unbound states.
+
+    Single parameters:
+          :A: Amplitude (eV). Defaults to 1.
+          :d: Dimensionality 1 < d <= 3. Defaults to 3.
+          :gamma: Excitonic broadening (eV). Defaults to 0.1.
+          :R: Excitonic binding energy (eV). Defaults to 0.1.
+          :Eg: Optical band gap energy (eV). Defaults to 1.
+          :a: Sellmeier coefficient for background dielectric constant (eV²).
+            Defaults to 0.
+          :b: Sellmeier coefficient for background dielectric constant (eV²).
+            Defaults to 0.
+
+    Repeated parameters.
+        --
+
+    Output:
+        The Tanguy dispersion. Since the formula is rather long it is not written here.
+        Please refer to the references for a full formula.
+
+    References:
+        * C. Tanguy, Phys. Rev. Lett. 75, 4090 (1995). Errata, Phys. Rev. Lett. 76, 716 (1996).
+        * C. Tanguy, Phys. Rev. B. 60. 10660 (1990).
+    """
+
+    single_params_template = {
+        "A": 1,
+        "d": 3,
+        "gamma": 0.1,
+        "R": 0.1,
+        "Eg": 1,
+        "a": 0,
+        "b": 0,
+    }
+    rep_params_template = {}
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        E = conversion_wavelength_energy(lbda)
+        A = self.single_params.get("A")
+        d = self.single_params.get("d")
+        gam = self.single_params.get("gamma")
+        R = self.single_params.get("R")
+        Eg = self.single_params.get("Eg")
+        a = self.single_params.get("a")
+        b = self.single_params.get("b")
+
+        return (
+            1
+            + a / (b - E**2)
+            + A
+            * R ** (d / 2 - 1)
+            / (E + 1j * gam) ** 2
+            * (
+                Tanguy.g(Tanguy.xsi(E + 1j * gam, R, Eg), d)
+                + Tanguy.g(Tanguy.xsi(-E - 1j * gam, R, Eg), d)
+                - 2 * Tanguy.g(Tanguy.xsi(E * 0, R, Eg), d)
+            )
+        )
+
+    @staticmethod
+    def xsi(z, R, Eg):
+        return sqrt(R / (Eg - z))
+
+    @staticmethod
+    def g(xsi, d):
+        if d == 2:
+            return 2 * np.log(xsi) - 2 * digamma(0.5 - xsi)
+        if d == 3:
+            return 2 * np.log(xsi) - 2 * digamma(1 - xsi) - 1 / xsi
+
+        D = d - 1
+        return (
+            2
+            * np.pi
+            * gamma(D / 2 + xsi)
+            / gamma(D / 2) ** 2
+            / gamma(1 - D / 2 + xsi)
+            / xsi ** (d - 2)
+            * (1 / np.tan(np.pi * (D / 2 - xsi)) - 1 / np.tan(np.pi * D))
+        )
diff --git a/src/elli/dispersions/tauc_lorentz.py b/src/elli/dispersions/tauc_lorentz.py
new file mode 100644
index 00000000..68f68a83
--- /dev/null
+++ b/src/elli/dispersions/tauc_lorentz.py
@@ -0,0 +1,78 @@
+# Encoding: utf-8
+"""Tauc-Lorentz dispersion law. Model by Jellison and Modine."""
+import numpy as np
+import numpy.typing as npt
+from numpy.lib.scimath import sqrt
+
+from ..utils import conversion_wavelength_energy
+from .base_dispersion import Dispersion
+
+
+class TaucLorentz(Dispersion):
+    """Tauc-Lorentz dispersion law. Model by Jellison and Modine.
+
+    Single parameters:
+        :Eg: Bandgap energy (eV). Defaults to 1.
+
+    Repeated parameters:
+        :A: Strength of the absorption. Typically 10 < A < 200. Defaults to 20.
+        :E: Lorentz resonance energy (eV). Always keep E > Eg!!. Defaults to 1.5.
+        :C: Lorentz broadening (eV). Typically 0 < Ci < 10. Defaults to 1.
+
+    Output:
+        The Tauc lorentz dispersion. Please refer to the references for a full formula.
+
+    References:
+        * G.E. Jellision and F.A. Modine, Appl. Phys. Lett. 69 (3), 371-374 (1996)
+        * Erratum, G.E. Jellison and F.A. Modine, Appl. Phys. Lett 69 (14), 2137 (1996)
+        * H. Chen, W.Z. Shen, Eur. Phys. J. B. 43, 503-507 (2005)
+    """
+
+    single_params_template = {"Eg": 1}
+    rep_params_template = {"A": 20, "E": 1.5, "C": 1}
+
+    @staticmethod
+    def eps1(E, Eg, Ai, Ei, Ci):
+        gamma2 = sqrt(Ei**2 - Ci**2 / 2) ** 2
+        alpha = sqrt(4 * Ei**2 - Ci**2)
+        aL = (
+            (Eg**2 - Ei**2) * E**2
+            + Eg**2 * Ci**2
+            - Ei**2 * (Ei**2 + 3 * Eg**2)
+        )
+        aA = (E**2 - Ei**2) * (Ei**2 + Eg**2) + Eg**2 * Ci**2
+        zeta4 = (E**2 - gamma2) ** 2 + alpha**2 * Ci**2 / 4
+
+        # fmt: off
+        return (
+            Ai*Ci*aL/2.0/np.pi/zeta4/alpha/Ei*np.log((Ei**2 + Eg**2 + alpha*Eg)/(Ei**2 + Eg**2 - alpha*Eg)) - \
+            Ai*aA/np.pi/zeta4/Ei*(np.pi - np.arctan((2.0*Eg + alpha)/Ci) + np.arctan((alpha - 2.0*Eg)/Ci)) + \
+            2.0*Ai*Ei*Eg/np.pi/zeta4/alpha*(E**2 - gamma2)*(np.pi + 2.0*np.arctan(2.0/alpha/Ci*(gamma2 - Eg**2))) - \
+            Ai*Ei*Ci*(E**2 + Eg**2)/np.pi/zeta4/E*np.log(abs(E - Eg)/(E + Eg)) + \
+            2.0*Ai*Ei*Ci*Eg/np.pi/zeta4 * \
+            np.log(abs(E - Eg) * (E + Eg) / sqrt((Ei**2 - Eg**2)**2 + Eg**2 * Ci**2))
+        )
+        # fmt: on
+
+    def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        energy = conversion_wavelength_energy(lbda)
+        energy_g = self.single_params.get("Eg")
+        return sum(
+            (
+                1j
+                * (
+                    c.get("A")
+                    * c.get("E")
+                    * c.get("C")
+                    * (energy - energy_g) ** 2
+                    / (
+                        (energy**2 - c.get("E") ** 2) ** 2
+                        + c.get("C") ** 2 * energy**2
+                    )
+                    / energy
+                )
+                * np.heaviside(energy - energy_g, 0)
+                + self.eps1(energy, energy_g, c.get("A"), c.get("E"), c.get("C"))
+            )
+            for c in self.rep_params
+        )
diff --git a/src/elli/importer/__init__.py b/src/elli/importer/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/elli/nexus.py b/src/elli/importer/nexus.py
similarity index 92%
rename from src/elli/nexus.py
rename to src/elli/importer/nexus.py
index 1458213e..136799ec 100644
--- a/src/elli/nexus.py
+++ b/src/elli/importer/nexus.py
@@ -8,10 +8,10 @@
 import numpy as np
 import pandas as pd
 
-from .utils import calc_rho
+from ..utils import calc_rho
 
 
-def read_psi_delta(nxs_filename: str) -> pd.DataFrame:
+def read_nexus_psi_delta(nxs_filename: str) -> pd.DataFrame:
     """Read a NeXus file containing Psi and Delta data.
 
     Args:
@@ -50,7 +50,7 @@ def read_psi_delta(nxs_filename: str) -> pd.DataFrame:
     return psi_delta_df.rename(columns={"psi": "Ψ", "delta": "Δ"})
 
 
-def read_rho(nxs_filename: str) -> pd.DataFrame:
+def read_nexus_rho(nxs_filename: str) -> pd.DataFrame:
     """Reads rho value from NeXus datafile.
     Currently, this works only with psi / delta representation in the NeXus file.
 
@@ -62,4 +62,4 @@ def read_rho(nxs_filename: str) -> pd.DataFrame:
         The index is a multiindex consisting of the angle of incidents as first column
         and the wavelength as second column.
     """
-    return calc_rho(read_psi_delta(nxs_filename))
+    return calc_rho(read_nexus_psi_delta(nxs_filename))
diff --git a/src/elli/importer/spectraray.py b/src/elli/importer/spectraray.py
new file mode 100644
index 00000000..a3a48bc1
--- /dev/null
+++ b/src/elli/importer/spectraray.py
@@ -0,0 +1,102 @@
+"""A helper class to load data from SpectraRay ASCII Files.
+It only supplies a rudimentary loading of standard psi/delta values
+and misses some other features.
+"""
+import pandas as pd
+
+from ..utils import calc_rho
+
+
+def read_spectraray_psi_delta(
+    fname: str, sep: str = r"\s+", decimal: str = "."
+) -> pd.DataFrame:
+    r"""Read a psi/delta spectraray ascii file.
+    Only reads the first entry and does not support reading multiple angles.
+    For multiple angles you have to save the data in multiple files.
+
+    Args:
+        fname (str): Filename of the measurement ascii file.
+        sep (str, optional): Data separator in the datafile. Defaults to "\s+".
+        decimal (str, optional): Decimal separator in the datafile. Defaults to ".".
+
+    Returns:
+        pd.DataFrame: DataFrame containing the psi/delta data in
+        the format to be further processes inside pyElli.
+    """
+    psi_delta = pd.read_csv(
+        fname,
+        index_col=0,
+        sep=sep,
+        decimal=decimal,
+        usecols=[0, 1, 2],
+        names=["Wavelength", "Ψ", "Δ"],
+        skiprows=1,
+    )
+
+    psi_delta.loc[:, "Δ"] = psi_delta.loc[:, "Δ"].where(
+        psi_delta.loc[:, "Δ"] <= 180, psi_delta.loc[:, "Δ"] - 360
+    )
+
+    return psi_delta
+
+
+def read_spectraray_mmatrix(
+    fname: str, sep: str = r"\s+", decimal: str = "."
+) -> pd.DataFrame:
+    r"""Read a mueller matrix spectraray ascii file.
+    Only reads the first entry and does not support reading multiple angles.
+    For multiple angles you have to save the data in multiple files.
+
+    Args:
+        fname (str): Filename of the measurement ascii file.
+        sep (str, optional): Data separator in the datafile. Defaults to "\s+".
+        decimal (str, optional): Decimal separator in the datafile. Defaults to ".".
+
+    Returns:
+        pd.DataFrame: DataFrame containing the psi/delta data in
+        the format to be further processes inside pyElli.
+    """
+    mueller_matrix = pd.read_csv(fname, sep=sep, decimal=decimal, index_col=0).iloc[
+        :, -17:-1
+    ]
+    mueller_matrix.index.name = "Wavelength"
+    mueller_matrix.columns = [
+        "M11",
+        "M12",
+        "M13",
+        "M14",
+        "M21",
+        "M22",
+        "M23",
+        "M24",
+        "M31",
+        "M32",
+        "M33",
+        "M34",
+        "M41",
+        "M42",
+        "M43",
+        "M44",
+    ]
+
+    return mueller_matrix
+
+
+def read_spectraray_rho(
+    fname: str, sep: str = r"\s+", decimal: str = "."
+) -> pd.DataFrame:
+    r"""Read a psi/delta spectraray ascii file and converts it to rho values.
+    Only reads the first entry and does not support reading multiple angles.
+    For multiple angles you have to save the data in multiple files.
+
+    Args:
+        fname (str): Filename of the measurement ascii file.
+        sep (str, optional): Data separator in the datafile. Defaults to "\s+".
+        decimal (str, optional): Decimal separator in the datafile. Defaults to ".".
+
+    Returns:
+        pd.DataFrame: DataFrame containing the rho data in
+        the format to be further processes inside pyElli.
+    """
+    psi_delta = read_spectraray_psi_delta(fname, sep, decimal)
+    return calc_rho(psi_delta)
diff --git a/src/elli/materials_db.py b/src/elli/materials_db.py
index f08c11fe..af5e06d5 100644
--- a/src/elli/materials_db.py
+++ b/src/elli/materials_db.py
@@ -1,5 +1,5 @@
 # Encoding: utf-8
-from .dispersions.dispersions import ConstantRefractiveIndex
+from .dispersions import ConstantRefractiveIndex
 from .materials import IsotropicMaterial
 
 AIR = IsotropicMaterial(ConstantRefractiveIndex(n=1))
diff --git a/src/elli/spectraray.py b/src/elli/spectraray.py
deleted file mode 100644
index 637e0761..00000000
--- a/src/elli/spectraray.py
+++ /dev/null
@@ -1,155 +0,0 @@
-"""A helper class to load data from SpectraRay ASCII Files.
-It only supplies a rudimentary loading of standard psi/delta values
-and misses some other features.
-"""
-import pandas as pd
-
-from .dispersions.dispersions import TableEpsilon
-from .utils import calc_rho, conversion_wavelength_energy
-
-
-class SpectraRay:
-    """Helper class to load spectraray ascii files into
-    pyEllis pandas format."""
-
-    def __init__(self, path: str) -> None:
-        self.spectraray_path = path
-
-    def loadDispersionTable(self, fname: str) -> TableEpsilon:
-        """Load a dispersion table from a ascii file
-        in the spectraray materials ascii format.
-        This only accounts for tabulated dielectric function data.
-        Spectraray also stores dispersion data in other formats,
-        but this function is not able to read these other formats.
-
-        Args:
-            fname (str): The filename of the spectraray ascii file.
-
-        Returns:
-            TableEpsilon: A dispersion class containing the tabulated data.
-        """
-        start = 0
-        stop = 0
-        with open(self.spectraray_path + fname, "r", encoding="utf8") as file:
-            line = file.readline()
-            cnt = 0
-            while line:
-                if line.strip() == "Begin of array":
-                    start = cnt + 1
-                if line.strip() == "End of array":
-                    stop = cnt
-                line = file.readline()
-                cnt += 1
-
-                if line.startswith("Units="):
-                    x_unit = line.split("=")[1].split(",")[0]
-
-        df = pd.read_csv(
-            self.spectraray_path + fname,
-            delim_whitespace=True,
-            skiprows=start,
-            nrows=stop - start,
-            index_col=0,
-            usecols=[0, 1, 2],
-            names=[x_unit, "ϵ1", "ϵ2"],
-        )
-
-        if x_unit == "Wavelength":
-            return TableEpsilon(
-                lbda=df.index, epsilon=df.loc[:, "ϵ1"] + 1j * df.iloc[:, "ϵ2"]
-            )
-        return TableEpsilon(
-            lbda=conversion_wavelength_energy(df.index),
-            epsilon=df.loc[:, "ϵ1"] + 1j * df.loc[:, "ϵ2"],
-        )
-
-    @staticmethod
-    def read_psi_delta_file(
-        fname: str, sep: str = r"\s+", decimal: str = "."
-    ) -> pd.DataFrame:
-        """Read a psi/delta spectraray ascii file.
-        Only reads the first entry and does not support reading multiple angles.
-        For multiple angles you have to save the data in multiple files.
-
-        Args:
-            fname (str): Filename of the measurement ascii file.
-            sep (str, optional): Data separator in the datafile. Defaults to "\s+".
-            decimal (str, optional): Decimal separator in the datafile. Defaults to ".".
-
-        Returns:
-            pd.DataFrame: DataFrame containing the psi/delta data in
-            the format to be further processes inside pyElli.
-        """
-        psi_delta = pd.read_csv(
-            fname,
-            index_col=0,
-            sep=sep,
-            decimal=decimal,
-            usecols=[0, 1, 2],
-            names=["Wavelength", "Ψ", "Δ"],
-            skiprows=1,
-        )
-
-        psi_delta.loc[:, "Δ"] = psi_delta.loc[:, "Δ"].where(
-            psi_delta.loc[:, "Δ"] <= 180, psi_delta.loc[:, "Δ"] - 360
-        )
-
-        return psi_delta
-
-    @staticmethod
-    def read_mmatrix(fname: str, sep: str = r"\s+", decimal: str = ".") -> pd.DataFrame:
-        """Read a mueller matrix spectraray ascii file.
-        Only reads the first entry and does not support reading multiple angles.
-        For multiple angles you have to save the data in multiple files.
-
-        Args:
-            fname (str): Filename of the measurement ascii file.
-            sep (str, optional): Data separator in the datafile. Defaults to "\s+".
-            decimal (str, optional): Decimal separator in the datafile. Defaults to ".".
-
-        Returns:
-            pd.DataFrame: DataFrame containing the psi/delta data in
-            the format to be further processes inside pyElli.
-        """
-        mueller_matrix = pd.read_csv(fname, sep=sep, decimal=decimal, index_col=0).iloc[
-            :, -17:-1
-        ]
-        mueller_matrix.index.name = "Wavelength"
-        mueller_matrix.columns = [
-            "M11",
-            "M12",
-            "M13",
-            "M14",
-            "M21",
-            "M22",
-            "M23",
-            "M24",
-            "M31",
-            "M32",
-            "M33",
-            "M34",
-            "M41",
-            "M42",
-            "M43",
-            "M44",
-        ]
-
-        return mueller_matrix
-
-    @staticmethod
-    def read_rho(fname: str, sep: str = r"\s+", decimal: str = ".") -> pd.DataFrame:
-        """Read a psi/delta spectraray ascii file and converts it to rho values.
-        Only reads the first entry and does not support reading multiple angles.
-        For multiple angles you have to save the data in multiple files.
-
-        Args:
-            fname (str): Filename of the measurement ascii file.
-            sep (str, optional): Data separator in the datafile. Defaults to "\s+".
-            decimal (str, optional): Decimal separator in the datafile. Defaults to ".".
-
-        Returns:
-            pd.DataFrame: DataFrame containing the rho data in
-            the format to be further processes inside pyElli.
-        """
-        psi_delta = SpectraRay.read_psi_delta_file(fname, sep, decimal)
-        return calc_rho(psi_delta)


Test patch:
diff --git a/tests/test_TiO2.py b/tests/test_TiO2.py
index 800f9bab..f57c7899 100644
--- a/tests/test_TiO2.py
+++ b/tests/test_TiO2.py
@@ -29,14 +29,14 @@ def datadir(tmpdir, request):
 @fixture
 def meas_data(datadir):
     """Fixture for getting the reference measurement data from the file."""
-    return elli.SpectraRay.read_rho(datadir.join("TiO2_400cycles.txt")).loc[400:800]
+    return elli.read_spectraray_rho(datadir.join("TiO2_400cycles.txt")).loc[400:800]
 
 
 @fixture
 def si_dispersion(datadir):
     """Fixture to load the silicon dispersion from file."""
-    sr = elli.SpectraRay(datadir)
-    silicon = elli.IsotropicMaterial(sr.loadDispersionTable(f"{os.sep}Si_Aspnes.mat"))
+    sr = elli.TableSpectraRay(datadir)
+    silicon = elli.IsotropicMaterial(sr.load_dispersion_table(f"{os.sep}Si_Aspnes.mat"))
 
     return silicon
 
diff --git a/tests/test_nexus.py b/tests/test_nexus.py
index 608fcd47..8e649106 100644
--- a/tests/test_nexus.py
+++ b/tests/test_nexus.py
@@ -4,7 +4,7 @@
 import os
 from distutils import dir_util
 
-from elli.nexus import read_psi_delta, read_rho
+import elli
 from pytest import fixture
 
 
@@ -36,10 +36,10 @@ def nexus_psi_delta_file(datadir):
 # pylint: disable=redefined-outer-name
 def test_reading_of_psi_delta_nxs(nexus_psi_delta_file):
     """Psi/delta NeXus file is read w/o errors"""
-    read_psi_delta(nexus_psi_delta_file)
+    elli.read_nexus_psi_delta(nexus_psi_delta_file)
 
 
 # pylint: disable=redefined-outer-name
 def test_reading_and_conv_to_rho(nexus_psi_delta_file):
     """Rho values are read from Psi / Delta file"""
-    read_rho(nexus_psi_delta_file)
+    elli.read_nexus_rho(nexus_psi_delta_file)
diff --git a/tests/test_notebook.ipynb b/tests/test_notebook.ipynb
index 15a9048c..776f8e4a 100644
--- a/tests/test_notebook.ipynb
+++ b/tests/test_notebook.ipynb
@@ -8,7 +8,8 @@
    "outputs": [],
    "source": [
     "import elli\n",
-    "from elli.fitting import ParamsHist, fit"
+    "from elli.fitting import ParamsHist, fit\n",
+    "from elli.importer.spectraray import read_spectraray_psi_delta, read_spectraray_rho"
    ]
   },
   {
@@ -29,8 +30,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "tss = elli.SpectraRay.read_psi_delta_file(\"test_TiO2/TiO2_400cycles.txt\").loc[400:800]\n",
-    "ρ = elli.SpectraRay.read_rho(\"test_TiO2/TiO2_400cycles.txt\").loc[400:800]"
+    "tss = read_spectraray_psi_delta(\"test_TiO2/TiO2_400cycles.txt\").loc[400:800]\n",
+    "ρ = read_spectraray_rho(\"test_TiO2/TiO2_400cycles.txt\").loc[400:800]"
    ]
   },
   {
@@ -76,7 +77,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "24711b8d758644c1a16203b7a4d93595",
+       "model_id": "be37fb0c5e6c459e8f05754c5a5366f3",
        "version_major": 2,
        "version_minor": 0
       },
@@ -91,8 +92,8 @@
    "source": [
     "@fit(tss, params)\n",
     "def model(lbda, params):\n",
-    "    sr = elli.SpectraRay(\"./\")\n",
-    "    Si = elli.IsotropicMaterial(sr.loadDispersionTable(\"test_TiO2/Si_Aspnes.mat\"))\n",
+    "    sr = elli.TableSpectraRay(\"./\")\n",
+    "    Si = elli.IsotropicMaterial(sr.load_dispersion_table(\"test_TiO2/Si_Aspnes.mat\"))\n",
     "\n",
     "    SiO2 = elli.Cauchy(\n",
     "        params[\"SiO2_n0\"],\n",
@@ -133,10 +134,10 @@
     {
      "data": {
       "text/html": [
-       "<h2>Fit Statistics</h2><table><tr><td>fitting method</td><td>leastsq</td><td></td></tr><tr><td># function evals</td><td>31</td><td></td></tr><tr><td># data points</td><td>1852</td><td></td></tr><tr><td># variables</td><td>4</td><td></td></tr><tr><td>chi-square</td><td> 0.04559962</td><td></td></tr><tr><td>reduced chi-square</td><td> 2.4675e-05</td><td></td></tr><tr><td>Akaike info crit.</td><td>-19645.1968</td><td></td></tr><tr><td>Bayesian info crit.</td><td>-19623.1007</td><td></td></tr></table><h2>Variables</h2><table><tr><th> name </th><th> value </th><th> standard error </th><th> relative error </th><th> initial value </th><th> min </th><th> max </th><th> vary </th></tr><tr><td> SiO2_n0 </td><td>  1.45200000 </td><td>  0.00000000 </td><td> (0.00%) </td><td> 1.452 </td><td> -100.000000 </td><td>  100.000000 </td><td> False </td></tr><tr><td> SiO2_n1 </td><td>  36.0000000 </td><td>  0.00000000 </td><td> (0.00%) </td><td> 36.0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_n2 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_k0 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -100.000000 </td><td>  100.000000 </td><td> False </td></tr><tr><td> SiO2_k1 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_k2 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_d </td><td>  276.360000 </td><td>  0.00000000 </td><td> (0.00%) </td><td> 276.36 </td><td>  0.00000000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> TiO2_n0 </td><td>  2.23183204 </td><td>  0.00494641 </td><td> (0.22%) </td><td> 2.236 </td><td> -100.000000 </td><td>  100.000000 </td><td> True </td></tr><tr><td> TiO2_n1 </td><td>  449.066655 </td><td>  23.2018656 </td><td> (5.17%) </td><td> 451 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> True </td></tr><tr><td> TiO2_n2 </td><td>  199.774692 </td><td>  26.9845845 </td><td> (13.51%) </td><td> 251 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> True </td></tr><tr><td> TiO2_k0 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -100.000000 </td><td>  100.000000 </td><td> False </td></tr><tr><td> TiO2_k1 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> TiO2_k2 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> TiO2_d </td><td>  24.8772290 </td><td>  0.01058302 </td><td> (0.04%) </td><td> 20 </td><td>  0.00000000 </td><td>  40000.0000 </td><td> True </td></tr></table><h2>Correlations (unreported correlations are < 0.100)</h2><table><tr><td>TiO2_n0</td><td>TiO2_n1</td><td>-0.9910</td></tr><tr><td>TiO2_n1</td><td>TiO2_n2</td><td>-0.9879</td></tr><tr><td>TiO2_n0</td><td>TiO2_n2</td><td>0.9640</td></tr></table>"
+       "<h2>Fit Statistics</h2><table><tr><td>fitting method</td><td>leastsq</td><td></td></tr><tr><td># function evals</td><td>31</td><td></td></tr><tr><td># data points</td><td>1852</td><td></td></tr><tr><td># variables</td><td>4</td><td></td></tr><tr><td>chi-square</td><td> 0.04559960</td><td></td></tr><tr><td>reduced chi-square</td><td> 2.4675e-05</td><td></td></tr><tr><td>Akaike info crit.</td><td>-19645.1977</td><td></td></tr><tr><td>Bayesian info crit.</td><td>-19623.1016</td><td></td></tr></table><h2>Variables</h2><table><tr><th> name </th><th> value </th><th> standard error </th><th> relative error </th><th> initial value </th><th> min </th><th> max </th><th> vary </th></tr><tr><td> SiO2_n0 </td><td>  1.45200000 </td><td>  0.00000000 </td><td> (0.00%) </td><td> 1.452 </td><td> -100.000000 </td><td>  100.000000 </td><td> False </td></tr><tr><td> SiO2_n1 </td><td>  36.0000000 </td><td>  0.00000000 </td><td> (0.00%) </td><td> 36.0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_n2 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_k0 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -100.000000 </td><td>  100.000000 </td><td> False </td></tr><tr><td> SiO2_k1 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_k2 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> SiO2_d </td><td>  276.360000 </td><td>  0.00000000 </td><td> (0.00%) </td><td> 276.36 </td><td>  0.00000000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> TiO2_n0 </td><td>  2.23183203 </td><td>  0.00494641 </td><td> (0.22%) </td><td> 2.236 </td><td> -100.000000 </td><td>  100.000000 </td><td> True </td></tr><tr><td> TiO2_n1 </td><td>  449.066722 </td><td>  23.2018350 </td><td> (5.17%) </td><td> 451 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> True </td></tr><tr><td> TiO2_n2 </td><td>  199.774595 </td><td>  26.9845983 </td><td> (13.51%) </td><td> 251 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> True </td></tr><tr><td> TiO2_k0 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -100.000000 </td><td>  100.000000 </td><td> False </td></tr><tr><td> TiO2_k1 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> TiO2_k2 </td><td>  0.00000000 </td><td>  0.00000000 </td><td>  </td><td> 0 </td><td> -40000.0000 </td><td>  40000.0000 </td><td> False </td></tr><tr><td> TiO2_d </td><td>  24.8772289 </td><td>  0.01058302 </td><td> (0.04%) </td><td> 20 </td><td>  0.00000000 </td><td>  40000.0000 </td><td> True </td></tr></table><h2>Correlations (unreported correlations are < 0.100)</h2><table><tr><td>TiO2_n0</td><td>TiO2_n1</td><td>-0.9910</td></tr><tr><td>TiO2_n1</td><td>TiO2_n2</td><td>-0.9879</td></tr><tr><td>TiO2_n0</td><td>TiO2_n2</td><td>0.9640</td></tr></table>"
       ],
       "text/plain": [
-       "<lmfit.minimizer.MinimizerResult at 0x7fc2ee2a0e80>"
+       "<lmfit.minimizer.MinimizerResult at 0x7fa108297dc0>"
       ]
      },
      "execution_count": 5,
@@ -163,33 +164,20 @@
    "id": "d829a852-1e1e-445b-a6b5-eaaa2ebaf47e",
    "metadata": {},
    "outputs": [
-    {
-     "ename": "ValueError",
-     "evalue": "\n    Invalid element(s) received for the 'data' property of \n        Invalid elements include: [<AxesSubplot:xlabel='Wavelength'>]\n\n    The 'data' property is a tuple of trace instances\n    that may be specified as:\n      - A list or tuple of trace instances\n        (e.g. [Scatter(...), Bar(...)])\n      - A single trace instance\n        (e.g. Scatter(...), Bar(...), etc.)\n      - A list or tuple of dicts of string/value properties where:\n        - The 'type' property specifies the trace type\n            One of: ['bar', 'barpolar', 'box', 'candlestick',\n                     'carpet', 'choropleth', 'choroplethmapbox',\n                     'cone', 'contour', 'contourcarpet',\n                     'densitymapbox', 'funnel', 'funnelarea',\n                     'heatmap', 'heatmapgl', 'histogram',\n                     'histogram2d', 'histogram2dcontour', 'icicle',\n                     'image', 'indicator', 'isosurface', 'mesh3d',\n                     'ohlc', 'parcats', 'parcoords', 'pie',\n                     'pointcloud', 'sankey', 'scatter',\n                     'scatter3d', 'scattercarpet', 'scattergeo',\n                     'scattergl', 'scattermapbox', 'scatterpolar',\n                     'scatterpolargl', 'scattersmith',\n                     'scatterternary', 'splom', 'streamtube',\n                     'sunburst', 'surface', 'table', 'treemap',\n                     'violin', 'volume', 'waterfall']\n\n        - All remaining properties are passed to the constructor of\n          the specified trace type\n\n        (e.g. [{'type': 'scatter', ...}, {'type': 'bar, ...}])",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
-      "Input \u001b[0;32mIn [6]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m/var/home/marius/GitHub/pyElli/src/elli/fitting/decorator_psi_delta.py:268\u001b[0m, in \u001b[0;36mFitRho.plot\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    265\u001b[0m \u001b[38;5;124;03m\"\"\"Plot the fit results as Psi/Delta\"\"\"\u001b[39;00m\n\u001b[1;32m    266\u001b[0m fit_result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexp_data\u001b[38;5;241m.\u001b[39mindex\u001b[38;5;241m.\u001b[39mto_numpy(), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfitted_params)\n\u001b[0;32m--> 268\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mgo\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mFigureWidget\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    269\u001b[0m \u001b[43m    \u001b[49m\u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    270\u001b[0m \u001b[43m        \u001b[49m\u001b[43m[\u001b[49m\n\u001b[1;32m    271\u001b[0m \u001b[43m            \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexp_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    272\u001b[0m \u001b[43m            \u001b[49m\u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDataFrame\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    273\u001b[0m \u001b[43m                \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mΨ_fit\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfit_result\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpsi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mΔ_fit\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfit_result\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelta\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    274\u001b[0m \u001b[43m                \u001b[49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexp_data\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    275\u001b[0m \u001b[43m            \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    276\u001b[0m \u001b[43m        \u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m    277\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    278\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m~/.local/lib/python3.10/site-packages/plotly/graph_objs/_figurewidget.py:594\u001b[0m, in \u001b[0;36mFigureWidget.__init__\u001b[0;34m(self, data, layout, frames, skip_invalid, **kwargs)\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m      6\u001b[0m     \u001b[38;5;28mself\u001b[39m, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, layout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, frames\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, skip_invalid\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs\n\u001b[1;32m      7\u001b[0m ):\n\u001b[1;32m      8\u001b[0m     \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m      9\u001b[0m \u001b[38;5;124;03m    Create a new :class:FigureWidget instance\u001b[39;00m\n\u001b[1;32m     10\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    592\u001b[0m \u001b[38;5;124;03m        is invalid AND skip_invalid is False\u001b[39;00m\n\u001b[1;32m    593\u001b[0m \u001b[38;5;124;03m    \"\"\"\u001b[39;00m\n\u001b[0;32m--> 594\u001b[0m     \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mFigureWidget\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlayout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskip_invalid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
-      "File \u001b[0;32m~/.local/lib/python3.10/site-packages/plotly/basewidget.py:117\u001b[0m, in \u001b[0;36mBaseFigureWidget.__init__\u001b[0;34m(self, data, layout, frames, skip_invalid, **kwargs)\u001b[0m\n\u001b[1;32m    108\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m    109\u001b[0m     \u001b[38;5;28mself\u001b[39m, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, layout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, frames\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, skip_invalid\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs\n\u001b[1;32m    110\u001b[0m ):\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    115\u001b[0m     \u001b[38;5;66;03m# with the `layout` constructor parameter of the `widgets.DOMWidget`\u001b[39;00m\n\u001b[1;32m    116\u001b[0m     \u001b[38;5;66;03m# ipywidgets class\u001b[39;00m\n\u001b[0;32m--> 117\u001b[0m     \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mBaseFigureWidget\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m    118\u001b[0m \u001b[43m        \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    119\u001b[0m \u001b[43m        \u001b[49m\u001b[43mlayout_plotly\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlayout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    120\u001b[0m \u001b[43m        \u001b[49m\u001b[43mframes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mframes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    121\u001b[0m \u001b[43m        \u001b[49m\u001b[43mskip_invalid\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mskip_invalid\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    122\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    123\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    125\u001b[0m     \u001b[38;5;66;03m# Validate Frames\u001b[39;00m\n\u001b[1;32m    126\u001b[0m     \u001b[38;5;66;03m# ---------------\u001b[39;00m\n\u001b[1;32m    127\u001b[0m     \u001b[38;5;66;03m# Frames are not supported by figure widget\u001b[39;00m\n\u001b[1;32m    128\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_frame_objs:\n",
-      "File \u001b[0;32m~/.local/lib/python3.10/site-packages/plotly/basedatatypes.py:516\u001b[0m, in \u001b[0;36mBaseFigure.__init__\u001b[0;34m(self, data, layout_plotly, frames, skip_invalid, **kwargs)\u001b[0m\n\u001b[1;32m    513\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_validator \u001b[38;5;241m=\u001b[39m DataValidator(set_uid\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_trace_uid)\n\u001b[1;32m    515\u001b[0m \u001b[38;5;66;03m# ### Import traces ###\u001b[39;00m\n\u001b[0;32m--> 516\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_data_validator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalidate_coerce\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    517\u001b[0m \u001b[43m    \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskip_invalid\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mskip_invalid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_validate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate\u001b[49m\n\u001b[1;32m    518\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    520\u001b[0m \u001b[38;5;66;03m# ### Save tuple of trace objects ###\u001b[39;00m\n\u001b[1;32m    521\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_objs \u001b[38;5;241m=\u001b[39m data\n",
-      "File \u001b[0;32m~/.local/lib/python3.10/site-packages/_plotly_utils/basevalidators.py:2694\u001b[0m, in \u001b[0;36mBaseDataValidator.validate_coerce\u001b[0;34m(self, v, skip_invalid, _validate)\u001b[0m\n\u001b[1;32m   2691\u001b[0m             invalid_els\u001b[38;5;241m.\u001b[39mappend(v_el)\n\u001b[1;32m   2693\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m invalid_els:\n\u001b[0;32m-> 2694\u001b[0m     \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_invalid_elements\u001b[49m\u001b[43m(\u001b[49m\u001b[43minvalid_els\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2696\u001b[0m v \u001b[38;5;241m=\u001b[39m to_scalar_or_list(res)\n\u001b[1;32m   2698\u001b[0m \u001b[38;5;66;03m# Set new UIDs\u001b[39;00m\n",
-      "File \u001b[0;32m~/.local/lib/python3.10/site-packages/_plotly_utils/basevalidators.py:305\u001b[0m, in \u001b[0;36mBaseValidator.raise_invalid_elements\u001b[0;34m(self, invalid_els)\u001b[0m\n\u001b[1;32m    303\u001b[0m     \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mraise_invalid_elements\u001b[39m(\u001b[38;5;28mself\u001b[39m, invalid_els):\n\u001b[1;32m    304\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m invalid_els:\n\u001b[0;32m--> 305\u001b[0m             \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m    306\u001b[0m                 \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    307\u001b[0m \u001b[38;5;124;03m    Invalid element(s) received for the '{name}' property of {pname}\u001b[39;00m\n\u001b[1;32m    308\u001b[0m \u001b[38;5;124;03m        Invalid elements include: {invalid}\u001b[39;00m\n\u001b[1;32m    309\u001b[0m \n\u001b[1;32m    310\u001b[0m \u001b[38;5;124;03m{valid_clr_desc}\"\"\"\u001b[39;00m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[1;32m    311\u001b[0m                     name\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplotly_name,\n\u001b[1;32m    312\u001b[0m                     pname\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparent_name,\n\u001b[1;32m    313\u001b[0m                     invalid\u001b[38;5;241m=\u001b[39minvalid_els[:\u001b[38;5;241m10\u001b[39m],\n\u001b[1;32m    314\u001b[0m                     valid_clr_desc\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdescription(),\n\u001b[1;32m    315\u001b[0m                 )\n\u001b[1;32m    316\u001b[0m             )\n",
-      "\u001b[0;31mValueError\u001b[0m: \n    Invalid element(s) received for the 'data' property of \n        Invalid elements include: [<AxesSubplot:xlabel='Wavelength'>]\n\n    The 'data' property is a tuple of trace instances\n    that may be specified as:\n      - A list or tuple of trace instances\n        (e.g. [Scatter(...), Bar(...)])\n      - A single trace instance\n        (e.g. Scatter(...), Bar(...), etc.)\n      - A list or tuple of dicts of string/value properties where:\n        - The 'type' property specifies the trace type\n            One of: ['bar', 'barpolar', 'box', 'candlestick',\n                     'carpet', 'choropleth', 'choroplethmapbox',\n                     'cone', 'contour', 'contourcarpet',\n                     'densitymapbox', 'funnel', 'funnelarea',\n                     'heatmap', 'heatmapgl', 'histogram',\n                     'histogram2d', 'histogram2dcontour', 'icicle',\n                     'image', 'indicator', 'isosurface', 'mesh3d',\n                     'ohlc', 'parcats', 'parcoords', 'pie',\n                     'pointcloud', 'sankey', 'scatter',\n                     'scatter3d', 'scattercarpet', 'scattergeo',\n                     'scattergl', 'scattermapbox', 'scatterpolar',\n                     'scatterpolargl', 'scattersmith',\n                     'scatterternary', 'splom', 'streamtube',\n                     'sunburst', 'surface', 'table', 'treemap',\n                     'violin', 'volume', 'waterfall']\n\n        - All remaining properties are passed to the constructor of\n          the specified trace type\n\n        (e.g. [{'type': 'scatter', ...}, {'type': 'bar, ...}])"
-     ]
-    },
     {
      "data": {
-      "image/png": "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\n",
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "2ff3023b04954b29ae0177a44af2497e",
+       "version_major": 2,
+       "version_minor": 0
+      },
       "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
+       "FigureWidget({\n",
+       "    'data': [{'hovertemplate': 'variable=Ψ<br>Wavelength=%{x}<br>value=%{y}<extra></extra>',\n",
+       "  …"
       ]
      },
-     "metadata": {
-      "needs_background": "light"
-     },
+     "metadata": {},
      "output_type": "display_data"
     }
    ],
@@ -199,10 +187,27 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 7,
    "id": "cc3cdccd",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "c12044f41823486fbd141de71257c951",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "FigureWidget({\n",
+       "    'data': [{'hovertemplate': 'variable=ρr<br>Wavelength=%{x}<br>value=%{y}<extra></extra>',\n",
+       " …"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "model.plot_rho()"
    ]
@@ -217,11 +222,8 @@
   }
  ],
  "metadata": {
-  "interpreter": {
-   "hash": "a3508d977314094448d964932c21feec0cbb52aa305b1bb4a08169b5f25e2bc2"
-  },
   "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
+   "display_name": "Python 3.9.8 64-bit ('berreman': venv)",
    "language": "python",
    "name": "python3"
   },
@@ -235,7 +237,12 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.10.4"
+   "version": "3.10.6"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "fce8773319f0403ecd2f0f37c27ee32851d93b84c4068e4fe241eeba95a951df"
+   }
   },
   "widgets": {
    "application/vnd.jupyter.widget-state+json": {