diff --git a/README.md b/README.md
index 94208cb..dc1aeb6 100644
--- a/README.md
+++ b/README.md
@@ -28,8 +28,8 @@
 cluster (> 1.9) in any way you want, otherwise you can follow one of this guide
 to install it:
 
-- [Install minikube on a single node](./prereqs/minikube.md)
-- [Install kubespray on a multiple nodes](./prereqs/kubespray.md)
+- [Install Kubernetes on a single node](./prereqs/k8s-single-node.md)
+- [Install Kubernetes on a multiple nodes](./prereqs/k8s-multi-node.md)
 
 ### Helm
 
diff --git a/SUMMARY.md b/SUMMARY.md
index b5adf9c..097f99b 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -5,8 +5,8 @@
     * [Networking Connectivity](prereqs/networking.md)
     * [Software Requirements](prereqs/software.md)
         * [Kubernetes](prereqs/kubernetes.md)
-            * [Single Node KB8s](prereqs/minikube.md)
-            * [Multi Node KB8s](prereqs/kubespray.md)
+            * [Single Node KB8s](prereqs/k8s-single-node.md)
+            * [Multi Node KB8s](prereqs/k8s-multi-node.md)
         * [Helm](prereqs/helm.md)
         * [Docker Registry](prereqs/docker-registry.md)
     * [Fabric setup](prereqs/fabric-setup.md)
diff --git a/prereqs/k8s-multi-node.md b/prereqs/k8s-multi-node.md
new file mode 100644
index 0000000..496c980
--- /dev/null
+++ b/prereqs/k8s-multi-node.md
@@ -0,0 +1,108 @@
+# Multi-node Kubernetes
+
+Usually multi-node Kubernetes installation are suggested for production and larger trials.
+
+## Kubernetes multi-node well-known releases
+
+* **Kubespray**
+    * Documentation: <https://github.com/kubernetes-incubator/kubespray>
+    * Minimum requirements:
+        * At least three machines (more info on hardware requirements on the Kubernetes website)
+
+## Kubespray demo / lab-trial installation scripts
+
+For simplicity, CORD provides some easy-to-use automated scripts to quickly setup Kubespray on an arbitrary number of target machines in few commands.
+
+This is meant only for *lab trials* and *demo use*.
+
+At the end of the procedure, Kubespray should be installed.
+
+### Requirements
+
+* **Operator machine** (1x, either physical or virtual machine)
+    * Has Git installed
+    * Has Python3 installed (<https://www.python.org/downloads/>)
+    * Has Stable version of Ansible installed (<http://docs.ansible.com/ansible/latest/intro_installation.html>)
+    * Is able to reach the target servers (ssh into them)
+* **Target machines** (at least 3x, either physical or virtual machines)
+    * Run Ubuntu 16.04 server
+    * Able to communicate together (ping one each other)
+    * Have the same user *cord* configured, that you can use to remotely access them from the operator machine
+    * The user *cord* is sudoer on each machine, and it doesn't need a password to get sudoer privileges
+
+### Get the Kubespray installation scripts
+
+On the operator machine
+```shell
+git clone https://gerrit.opencord.org/automation-tools
+```
+
+Inside, you will find a folder called *kubespray-installer*
+From now on the guide will assume you're running commands in this folder.
+
+### More on the Kubespray installation scripts
+
+The main script (*setup.sh*) provides an helper with instructions. To see it, run *./setup.sh --help*.
+
+The two main functions are:
+
+* Install Kubespray on an arbitrary number of target machines
+* Export the k8s configuration file path as environment variable to let the user access a specific deployment
+
+### Install Kubespray
+
+In the following example we assume that
+
+* Remote machines have the following IP addresses:
+    * 10.90.0.101
+    * 10.90.0.102
+    * 10.90.0.103
+
+* The deployment/POD has been given the arbitrary name *onf*
+
+The installation procedure goes through the following steps (right in this order):
+
+* Cleans up any old Kubespray installation folder (may be there from previous installations)
+* Clones the official Kubespray installation repository
+* Copies the public key of the operator machine, over to each target machine
+* Installs required software and configures the target machines as prescribed in the Kubespray guide
+* Deploys Kubespray
+* Downloads and exports the access configuration outside the Kubespray folder, so it won’t be removed at the next execution of the script (for example while trying to re-deploy the POD, or while deploying a different POD)
+
+To run the installation script, type
+```shell
+./setup.sh -i onf 10.90.0.101 10.90.0.102 10.90.0.103
+```
+
+At the beginning of the installation you'll be asked to insert your password multiple times.
+
+At the end of the procedure, Kubespray should be installed and running on the remote machines.
+
+The configuration file to access the POD will be saved in the subfolder *configs/onf.conf*.
+
+Want to deploy another POD without affecting your existing deployment?
+
+Runt the following:
+```shell
+./setup.sh -i my_other_deployment 192.168.0.1 192.168.0.2 192.168.0.3
+```
+
+Your *onf.conf* configuration will be always there, and your new *my_other_deployment.conf* file as well!
+
+### Access the Kubespray deployment
+
+Kubectl and helm (look [here](kubernetes.md) for more details) need to be pointed to a specific cluster, before being used. This is done through standard KUBECONFIG files.
+
+The script also helps you to automatically export the path pointing to an existing KUBECONFIG file, previously generated during the installation.
+
+To do that -for example against the onf pod just deployed, simply type
+
+```shell
+source setup.sh -s onf
+```
+
+At this point, you can start to use *kubectl* and *helm*.
+
+## Done?
+
+Are you done? You're ready to install kubectl and helm. Instructions [here](kubernetes.md#get-your-kubeconfig-file).
diff --git a/prereqs/k8s-single-node.md b/prereqs/k8s-single-node.md
new file mode 100644
index 0000000..caafec3
--- /dev/null
+++ b/prereqs/k8s-single-node.md
@@ -0,0 +1,33 @@
+# Install Minikube on a single node
+
+Usually single-node Kubernetes installation are suggested for development, testing, and small lab-trial deployments.
+
+## Kubernetes single-node well-known releases
+
+* **Minikube**
+    * Documentation: <https://kubernetes.io/docs/getting-started-guides/minikube/>
+    * Minimum requirements:
+        * One machine, either a physical machine or a VM. It could also be your own PC! It installs natively also on macOS.
+* **Mikrok8s**
+    * Documentation: <https://microk8s.io/>
+    * One machine, Linux based, either physical machine or virtual. It could also be your own PC!
+
+## Minikube installation walkthrough
+
+Install Minikube is so easy that there's no need for us to provide additional custom scripts. What we can do instead, is to point you to the official Minikube installation guide:
+
+### Install Minikube directly on the Linux OS (no VM support)
+
+**Suggested if you want to install Minikube on a Linux machine, either that this is a physical machine or a VM you created (even runing on your laptop)**
+
+Instructions avaialble at <https://github.com/kubernetes/minikube#linux-continuous-integration-without-vm-support>
+
+### Standard Minikube installation (VM support)
+
+**Suggested if you want to run Minikube directly on your Windows or macOS system**
+
+Instructions available at <https://kubernetes.io/docs/getting-started-guides/minikube/#installation>
+
+## Done?
+
+Are you done? You're ready to install kubectl and helm. Instructions [here](kubernetes.md#get-your-kubeconfig-file).
diff --git a/prereqs/kubespray.md b/prereqs/kubespray.md
deleted file mode 100644
index de79c4c..0000000
--- a/prereqs/kubespray.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Multi-node Kubernetes
-
-Usually multi-node Kubernetes installation are suggested for production and larger trials.
-
-## Kubernetes, multi-node well-known releases
-
-* Kubespray
-    * Documentation: <https://github.com/kubernetes-incubator/kubespray>
-    * What is used for: usually, for production deployments
-    * Minimum requirements:
-        * At least three machines (more info on hardware requirements on the Kubernetes website)
-
-## Kubespray lab-trial installation scripts
-
-For your convenience CORD provides some easy to use automated scripts to quickly install a lab environment in few commands.
-The goal of this script is to install Kubespray on a set of (minimum 3) target machines.
-
-At the end of the procedure, Kubespray should be installed.
-
-### Requirements
-
-* At least 4 machines: operator machine (i.e. laptop) + at least 3 target servers
-* Operator machine
-    * Has Git installed
-    * Has Python3 installed (<https://www.python.org/downloads/>)
-    * Has Stable version of Ansible installed (<http://docs.ansible.com/ansible/latest/intro_installation.html>)
-    * Is able to reach the target servers (ssh into them)
-* Target servers
-    * Have Ubuntu 16.04 installed 
-    * Are able to communicate together (ping one each other)
-    * They have the same user *cord* configured, that you can use to remotely access them from the operator machine
-    * The user *cord* is sudoer on each machine, and it doesn't need a password to get sudoer access
-
-### More on the Kubespray installation scripts
-
-All scripts are in the kubespray-installer folder just downloaded. From now on the guide assumes you’re running commands from this folder.
-
-The main script (*setup.sh*) provides an helper with instructions. Just run *./setup.sh --help* to see it.
-
-The two main functions are:
-
-* Install Kubespray on an arbitrary number of target machines
-* Export the k8s configuration file path as environment variable to let the user access a specific deployment
-
-### Get the Kubespray installation scripts
-
-On the operator machine
-```shell
-git clone https://gerrit.opencord.org/automation-tools
-```
-
-Inside, you will find a folder called *kubespray-installer*
-
-### Install Kubespray
-
-In the following example we assume that
-
-* Remote machines have the following IP addresses:
-    * 10.90.0.101
-    * 10.90.0.102
-    * 10.90.0.103
-
-* The deployment/POD has been given an arbitrary name: onf
-
-The installation procedure goes through the following steps (right in this order):
-
-* Cleans up any old Kubespray folder previously downloaded
-* Downloads a new, stable Kubespray installation repository
-* Copies the public key of the operator over to each target machine
-* Installs required software and configures the target machines as prescribed in the Kubespray guide
-* Deploys Kubespray
-* Downloads and exports the access configuration outside the Kubespray folder, so it won’t be removed at the next execution of the script (for example while trying to re-deploy the POD, or while deploying a different POD)
-
-To run the installation script, type
-```shell
-./setup.sh -i onf 10.90.0.101 10.90.0.102 10.90.0.103
-```
-
-**NOTE:** the first time you use the script, you will be promped to insert your password multiple times.
-
-At the end of the procedure, Kubespray should be installed and running on the remote machines.
-
-The configuration file to access the POD will be saved in the subfolder *configs/onf.conf*.
-
-Want to deploy another POD without affecting your existing deployment?
-
-Runt the following:
-```shell
-./setup.sh -i my_other_deployment 192.168.0.1 192.168.0.2 192.168.0.3
-```
-
-Your *onf.conf* configuration will be always there, and your new *my_other_deployment.conf* file as well!
-
-### Access the Kubespray deployment
-
-Kubectl and helm need to be pointed to a specific cluster, before being used.
-
-The script helps you also to automatically export the path pointing to an existing Kubespray configuration, previously generated during the installation.
-
-For example, if you want to run *kubectl get nodes* against the *onf* cluster just deployed, you should run:
-
-```shell
-source setup.sh -s onf
-```
-
-This will automatically run for you
-
-```shell
-export FULL_PATH/kubespray-installer/configs/onf.conf
-```
-
-As a result, you’ll now be able to successfully run *kubectl get nodes*.
diff --git a/prereqs/minikube.md b/prereqs/minikube.md
deleted file mode 100644
index ed7ee20..0000000
--- a/prereqs/minikube.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Install Minikube on a single node
-
-* **Documentation**: <https://kubernetes.io/docs/getting-started-guides/minikube/>
-
-* **What is used for**: usually, adopted in development environments. It can be installed even locally on the own machine
-
-* **Minimum requirements**:
-    * One machine, either a physical machine or a VM. It could also be your own PC!
diff --git a/profiles/mcord.md b/profiles/mcord.md
index ebde964..5e60d83 100644
--- a/profiles/mcord.md
+++ b/profiles/mcord.md
@@ -7,7 +7,7 @@
 minima provident aliquam eveniet a tempora saepe. Iusto.
 
 - A Kubernetes cluster (you will need a [multi node
-  cluster](../prereqs/kubespray.md))
+  cluster](../prereqs/k8s-multi-node.md))
 - Helm, follow [this guide](../prereqs/helm.md)
 - Openstack-Helm, follow [this guide](../prereqs/openstack-helm.md)
 
diff --git a/profiles/rcord-lite.md b/profiles/rcord-lite.md
index 2a50479..9aefb51 100644
--- a/profiles/rcord-lite.md
+++ b/profiles/rcord-lite.md
@@ -1,4 +1,4 @@
-# RCORD Lite
+# R-CORD Lite
 
 ## Prerequisites
 
@@ -7,8 +7,8 @@
 minima provident aliquam eveniet a tempora saepe. Iusto.
 
 - A Kubernetes cluster (you can follow one of this guide to install a [single
-  node cluster](../prereqs/minikube.md) or a [multi node
-  cluster](../prereqs/kubespray.md))
+  node cluster](../prereqs/k8s-single-node.md) or a [multi node
+  cluster](../prereqs/k8s-multi-node.md))
 - Helm, follow [this guide](../prereqs/helm.md)
 
 ## CORD Components
