diff --git a/notebooks/end2end_example/cybersecurity/1-train-mlp-with-brevitas.ipynb b/notebooks/end2end_example/cybersecurity/1-train-mlp-with-brevitas.ipynb
index 3792c5704bcff3600407522b530327ef48d53f6b..80d48beeebd61d9faa81ed9e47a33b04df23de7f 100644
--- a/notebooks/end2end_example/cybersecurity/1-train-mlp-with-brevitas.ipynb
+++ b/notebooks/end2end_example/cybersecurity/1-train-mlp-with-brevitas.ipynb
@@ -33,7 +33,7 @@
     "*The task:* The goal of [*network intrusion detection*](https://ieeexplore.ieee.org/abstract/document/283931) is to identify, preferably in real time, unauthorized use, misuse, and abuse of computer systems by both system insiders and external penetrators. This may be achieved by a mix of techniques, and machine-learning (ML) based techniques are increasing in popularity. \n",
     "\n",
     "*The dataset:* Several datasets are available for use in ML-based methods for intrusion detection.\n",
-    "The [UNSW-NB15](https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/) is one such dataset created by the Australian Centre for Cyber Security (ACCS) to provide a comprehensive network based data set which can reflect modern network traffic scenarios. You can find more details about the dataset on [its homepage](https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/).\n",
+    "The **UNSW-NB15** is one such dataset created by the Australian Centre for Cyber Security (ACCS) to provide a comprehensive network based data set which can reflect modern network traffic scenarios. You can find more details about the dataset on [its homepage](https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/).\n",
     "\n",
     "*Performance considerations:* FPGAs are commonly used for implementing high-performance packet processing systems that still provide a degree of programmability. To avoid introducing bottlenecks on the network, the DNN implementation must be capable of detecting malicious ones at line rate, which can be millions of packets per second, and is expected to increase further as next-generation networking solutions provide increased\n",
     "throughput. This is a good reason to consider FPGA acceleration for this particular use-case."
@@ -46,9 +46,8 @@
     "## Outline\n",
     "-------------\n",
     "\n",
-    "* [Initial setup](#initial_setup)\n",
-    "* [Load the UNSW_NB15 dataset](#load_dataset) \n",
-    "* [Define the Quantized MLP model](#define_quantized_mlp)\n",
+    "* [Load the UNSW_NB15 Dataset](#load_dataset) \n",
+    "* [Define the Quantized MLP Model](#define_quantized_mlp)\n",
     "* [Define Train and Test  Methods](#train_test)\n",
     "    * [(Option 1) Train the Model from Scratch](#train_scratch)\n",
     "    * [(Option 2) Load Pre-Trained Parameters](#load_pretrained)\n",
@@ -88,7 +87,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "We will create a binarized representation for the dataset by following the procedure defined by [Murovic and Trost](https://ev.fe.uni-lj.si/1-2-2019/Murovic.pdf), which we repeat briefly here:\n",
+    "We will create a binarized representation for the dataset by following the procedure defined by Murovic and Trost, which we repeat briefly here:\n",
     "\n",
     "* Original features have different formats ranging from integers, floating numbers to strings.\n",
     "* Integers, which for example represent a packet lifetime, are binarized with as many bits as to include the maximum value. \n",
@@ -405,7 +404,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "Training loss = 0.132480 test accuracy = 0.797989: 100%|██████████| 10/10 [00:57<00:00,  5.79s/it]\n"
+      "Training loss = 0.132480 test accuracy = 0.797989: 100%|██████████| 10/10 [00:58<00:00,  5.70s/it]\n"
      ]
     }
    ],
@@ -466,7 +465,7 @@
    "outputs": [
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -479,7 +478,7 @@
    ],
    "source": [
     "acc_per_epoch = [np.mean(acc_per_epoch) for acc_per_epoch in running_test_acc]\n",
-    "display_loss_plot(acc_per_epoch, title=\"Training accuracy\", ylabel=\"Accuracy [%]\")"
+    "display_loss_plot(acc_per_epoch, title=\"Test accuracy\", ylabel=\"Accuracy [%]\")"
    ]
   },
   {
@@ -567,6 +566,13 @@
     "test(model, test_quantized_loader)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Why do these parameters give better accuracy vs training from scratch?** Even with the topology and quantization fixed, achieving good accuracy on a given dataset requires [*hyperparameter tuning*](https://towardsdatascience.com/hyperparameters-optimization-526348bb8e2d) and potentially running training for a long time. The \"training from scratch\" example above is only intended as a quick example, whereas the pretrained parameters are obtained from a longer training run using the [determined.ai](https://determined.ai/) platform for hyperparameter tuning."
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -659,7 +665,7 @@
    "source": [
     "Next, we'll modify the expected input/output ranges. In FINN, we prefer to work with bipolar {-1, +1} instead of binary {0, 1} values. To achieve this, we'll create a \"wrapper\" model that handles the pre/postprocessing as follows:\n",
     "\n",
-    "* on the input side, we'll pre-process by (x + 1) / 2 in order to map incoming {-1, +1} inputs to {0, 1} ones which the trained network is used to. Since we're just multiplying/adding a scalar, these operations can be *streamlined* in FINN and implemented with no extra cost.\n",
+    "* on the input side, we'll pre-process by (x + 1) / 2 in order to map incoming {-1, +1} inputs to {0, 1} ones which the trained network is used to. Since we're just multiplying/adding a scalar, these operations can be [*streamlined*](https://finn.readthedocs.io/en/latest/nw_prep.html#streamlining-transformations) by FINN and implemented with no extra cost.\n",
     "\n",
     "* on the output side, we'll add a binary quantizer which maps everthing below 0 to -1 and everything above 0 to +1. This is essentially the same behavior as the sigmoid we used earlier, except the outputs are bipolar instead of binary."
    ]
@@ -748,7 +754,8 @@
    "source": [
     "# Export to FINN-ONNX <a id=\"export_finn_onnx\" ></a>\n",
     "\n",
-    "FINN expects an ONNX model as input. We'll now export our network into ONNX to be imported and used in FINN for the next notebooks. Note that the particular ONNX representation used for FINN differs from standard ONNX, you can read more about this [here](https://finn.readthedocs.io/en/latest/internals.html#intermediate-representation-finn-onnx)."
+    "\n",
+    "[ONNX](https://onnx.ai/) is an open format built to represent machine learning models, and the FINN compiler expects an ONNX model as input. We'll now export our network into ONNX to be imported and used in FINN for the next notebooks. Note that the particular ONNX representation used for FINN differs from standard ONNX, you can read more about this [here](https://finn.readthedocs.io/en/latest/internals.html#intermediate-representation-finn-onnx)."
    ]
   },
   {
@@ -833,11 +840,11 @@
    "source": [
     "## View the Exported ONNX in Netron\n",
     "\n",
-    "Let's examine the exported ONNX model with Netron. Particular things of note:\n",
+    "Let's examine the exported ONNX model with [Netron](https://github.com/lutzroeder/netron), which is a visualizer for neural networks and allows interactive investigation of network properties. For example, you can click on the individual nodes and view the properties. Particular things of note:\n",
     "\n",
     "* The input tensor \"0\" is annotated with `quantization: finn_datatype: BIPOLAR`\n",
     "* The input preprocessing (x + 1) / 2 is exported as part of the network (initial `Add` and `Div` layers)\n",
-    "* We've exported the padded version; shape of the first MatMul node's weight parameter is 600x64\n",
+    "* Brevitas `QuantLinear` layers are exported to ONNX as `MatMul`. We've exported the padded version; shape of the first MatMul node's weight parameter is 600x64\n",
     "* The weight parameters (second inputs) for MatMul nodes are annotated with `quantization: finn_datatype: INT2`\n",
     "* The quantized activations are exported as `MultiThreshold` nodes with `domain=finn.custom_op.general`\n",
     "* There's a final `MultiThreshold` node with threshold=0 to produce the final bipolar output (this is the `qnt_output` from `CybSecMLPForExport`"
@@ -869,7 +876,7 @@
        "        "
       ],
       "text/plain": [
-       "<IPython.lib.display.IFrame at 0x7f808a61f438>"
+       "<IPython.lib.display.IFrame at 0x7f77214fa630>"
       ]
      },
      "execution_count": 27,