diff --git a/evalhyd-cpp.ipynb b/evalhyd-cpp.ipynb
index 3f7f7da67af75bdf500c0f84ba9f43f29b79fa69..bbf353e74b00d03d38a85d666224cb001dcd84f2 100644
--- a/evalhyd-cpp.ipynb
+++ b/evalhyd-cpp.ipynb
@@ -14,7 +14,10 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "! evalhyd --help"
+    "#include <xtensor/xtensor.hpp>\n",
+    "#include <xtensor/xio.hpp>\n",
+    "#include <evalhyd/evald.hpp>\n",
+    "#include <evalhyd/evalp.hpp>"
    ],
    "metadata": {
     "collapsed": false
@@ -32,7 +35,7 @@
   {
    "cell_type": "markdown",
    "source": [
-    "Visualise streamflow observations"
+    "Define streamflow observations"
    ],
    "metadata": {
     "collapsed": false
@@ -43,8 +46,9 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "# shape: {1, time: 4}\n",
-    "! cat \"data/obs.csv\""
+    "// shape: {1, time: 4}\n",
+    "xt::xtensor<double, 2> obs =\n",
+    "    {{4.7, 4.3, 5.5, 2.7}};"
    ],
    "metadata": {
     "collapsed": false
@@ -53,7 +57,7 @@
   {
    "cell_type": "markdown",
    "source": [
-    "Visualise streamflow predictions"
+    "Define streamflow predictions"
    ],
    "metadata": {
     "collapsed": false
@@ -64,8 +68,9 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "# shape: {series: 1, time: 4}\n",
-    "! cat \"data/prd.csv\""
+    "// shape: {series: 1, time: 4}\n",
+    "xt::xtensor<double, 2> prd =\n",
+    "    {{5.3, 4.2, 5.7, 2.3}};"
    ],
    "metadata": {
     "collapsed": false
@@ -86,8 +91,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "# shape: {series: 1, subsets: 1, samples: 1}\n",
-    "! evalhyd evald \"data/obs.csv\" \"data/prd.csv\" \"NSE\""
+    "// shape: {series: 1, subsets: 1, samples: 1}\n",
+    "std::cout << evalhyd::evald(obs, prd, {\"NSE\"}) << std::endl;"
    ]
   },
   {
@@ -113,8 +118,9 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "# shape: {sites: 1, time: 5}\n",
-    "! cat \"data/obs/site_a.csv\""
+    "// shape: {sites: 1, time: 5}\n",
+    "xt::xtensor<double, 2> obs =\n",
+    "    {{4.7, 4.3, 5.5, 2.7, 4.1}};"
    ],
    "metadata": {
     "collapsed": false
@@ -134,8 +140,11 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "# shape: {sites: 1, lead times: 1, members: 3, time: 5}\n",
-    "! cat \"data/prd/leadtime_1/site_a.csv\""
+    "// shape: {sites: 1, lead times: 1, members: 3, time: 5}\n",
+    "xt::xtensor<double, 4> prd =\n",
+    "    {{{{5.3, 4.2, 5.7, 2.3, 3.1},\n",
+    "       {4.3, 4.2, 4.7, 4.3, 3.3},\n",
+    "       {5.3, 5.2, 5.7, 2.3, 3.9}}}};"
    ],
    "metadata": {
     "collapsed": false
@@ -155,8 +164,9 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "# shape: {sites: 1, thresholds: 2}\n",
-    "! cat \"data/thr/site_a.csv\""
+    "// shape: {sites: 1, thresholds: 2}\n",
+    "xt::xtensor<double, 2> thr =\n",
+    "    {{4., 5.}};"
    ],
    "metadata": {
     "collapsed": false
@@ -176,8 +186,8 @@
    "execution_count": null,
    "outputs": [],
    "source": [
-    "# shape: {sites: 1, lead times: 1, subsets: 1, samples: 1, thresholds: 2}\n",
-    "! evalhyd evalp \"data/obs\" \"data/prd\" \"BS\" --q_thr \"data/thr\" --events \"high\""
+    "// shape: {sites: 1, lead times: 1, subsets: 1, samples: 1, thresholds: 2}\n",
+    "std::cout << evalhyd::evalp(obs, prd, {\"BS\"}, thr, \"high\") << std::endl;"
    ],
    "metadata": {
     "collapsed": false