diff --git a/config/server/nexus.conf b/config/server/nexus.conf
index b144c56e5ca95f6dacaecf4168e8d60effcbf087..2383b68c462875d775fe5ec5367bf5f56a4f3b61 100644
--- a/config/server/nexus.conf
+++ b/config/server/nexus.conf
@@ -7,7 +7,7 @@ log_level = info
 api_default_port = 1077
 
 # Define the range of ports reserved for spice (must be > 1024 and < 65535).
-# Each running VM will use a port in this range on the server.
+# Each running VM uses a port in this range on the server.
 vm_spice_min_port = 44000
 vm_spice_max_port = 45000
 
diff --git a/docs/install.md b/docs/install.md
index ddae559acda5af82144d07b8d73981e5e8421893..bfd00f363f9604348a3bb70c695952df4b4f084f 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -2,20 +2,20 @@
 
 * [Introduction](#introduction)
 * [Installing the required dependencies](#installing-the-required-dependencies)
-* [Installing nexus-server for development](#installing-nexus-server-for-development)
 * [Installing nexus-server for production](#installing-nexus-server-for-production)
+* [Installing nexus-server for development](#installing-nexus-server-for-development)
 * [Building and running nexus clients](#building-and-running-nexus-clients)
+* [Creating initial templates](#creating-initial-templates)
+* [Copy a template from another server](#copy-a-template-from-another-server)
+* [Additional tools](#additional-tools)
+* [Details about requirements](#details-about-requirements)
 
+<!-- ============================================================================================================== -->
 # Introduction
 
-This document describes:
-
-- How to install nexus-server for development: useful for developping or contributing to nexus as well as easily testing it
-- How to install nexus-server for production
-- How to build and run nexus clients
-
-For simplicity, this document describes how to install **nexus** on a GNU/Linux system running Ubuntu. 
+In this document, we describe how to install **nexus** on a **Ubuntu GNU/Linux** system. Certain points mentionned in this document **only** apply to Ubuntu, so if you're running a different distribution, these points will have to be adapted to suit your specific distribution.
 
+<!-- ============================================================================================================== -->
 # Installing the required dependencies
 
 On a Ubuntu 24.04 system:
@@ -28,97 +28,122 @@ On a Ubuntu 22.04 system:
 sudo apt-get install -y qemu-system-x86 qemu-utils guestfish uuid-runtime git golang-go make gnutls-bin
 ```
 
-# Installing nexus-server for development
+<!-- ============================================================================================================== -->
+# Installing nexus-server for production
 
-## Building and installing nexus-server (dev)
+## Configuring nexus-server (prod)
 
-First, feel free to modify the server configuration by editing the following file:
+First, feel free to modify the server configuration file below. It contains auto-explanatory comments that describe what the various options are for:
 
 - `config/server/nexus.conf`
 
-Next, the `PREFIX` environment variable must be set to the root directory where nexus-server will be installed. Within that directory, a `nexus-server` directory will be created. Here, we set `PREFIX` to the home directory of the current user. This means nexus-server will be installed into `$HOME/nexus-server`.
+Certificates are required to ensure encrypted communication (TLS) with nexus clients. The installation script creates the required certificates, but you must still edit a few fields specific to your system in the following files:
 
-```
-export PREFIX=$HOME
-````
+1. `config/certs/nexus-server.info` : change these fields to your liking: `organization`, `cn`, `dns_name` and `ip_address`.
+1. `config/certs/ca.info` : change the `cn` field accordingly.
 
-If bash is your system shell, you can add the `export` line above to the `.bashrc` file in your home directory. This way, whenever you open a new terminal, the `PREFIX` variable will be set.
+## Building and installing nexus-server (prod)
 
-Then, run the following commands to build and install nexus-server for development:
+Next, run the following to build and install nexus-server. A `PREFIX` environment variable must be set to specify where nexus-server will be installed. Within that directory, a `nexus-server` directory will be created. Below, we set `PREFIX` to `/usr/local`. This means nexus-server will be installed into `/usr/local/nexus-server`:
 ```
 make build_srv
-make install_dev_srv
+sudo -E make install_prod_srv PREFIX=/usr/local
 ```
 
-## Running nexus-server (dev)
+The last command above performs the following operations:
 
+- Creates a `nexus` user and group to run the service.
+- Creates the file/directory hierarchy in nexus-server's root directory.
+- Creates and signs the certificates.
+- Add a crond task required by the service (to change kernel permissions which is required to run `guestfish` as a non-root user).
+- Integrates the service with systemd.
+- Creates a `users.json` file with user `admin@nexus.org`, featuring all capabilities. Its default password is `12345678`, therefore it is **highly** recommended to change it using a nexus client (see below).
+
+## Running nexus-server (prod)
+
+The installation script creates a systemd service named "nexus-server" which can be started with:
 ```
-make run_srv PREFIX=$HOME
+sudo systemctl start nexus-server
 ```
 
-## Updating nexus-server binaries (dev)
+## Controlling nexus-server with systemd (prod)
+
+Given nexus-server is a systemd service, it can be controled like any other systemd service:
+
+| Command                               | Description                            |
+|---                                    |---                                     |
+| `systemctl status nexus-server`       | display the state of the service       |
+| `sudo systemctl start nexus-server`   | start the service                      |
+| `sudo systemctl stop nexus-server`    | stop the service                       |
+| `sudo systemctl restart nexus-server` | restart the service                    |
+| `sudo systemctl reload nexus-server`  | reload the service                     |
+| `sudo systemctl enable nexus-server`  | enable the service at boot time        |
+| `sudo systemctl disable nexus-server` | disable the service at boot time       |
+| `journalctl -f --unit nexus-server`   | display and follow nexus-server's logs |
+
+## Updating nexus-server binaries (prod)
 
-During development, the server code is constantly modified. To build, update and run the server after a change, simply stop nexus-server by pressing CTRL-C and run:
 ```
-make build_srv update_srv run_srv
+make build_srv
+sudo systemctl stop nexus-server
+sudo -E make update_srv PREFIX=/usr/local
+sudo systemctl start nexus-server
 ```
 
-## Uninstalling nexus-server (dev)
+## Uninstalling nexus-server (prod)
+
+**WARNING: this will delete ALL installed VMs and templates!**
 
 ```
-make uninstall_prod_srv
+sudo systemctl stop nexus-server
+sudo -E make uninstall_prod_srv PREFIX=/usr/local
 ```
 
-# Installing nexus-server for production
+<!-- ============================================================================================================== -->
+# Installing nexus-server for development
 
-## Building and installing nexus-server (prod)
+Installing nexus-server for development is targeted towards developers who want to contribute to nexus or test it in a development environment.
 
-First, feel free to modify the server configuration by editing the following file:
+## Building and installing nexus-server (dev)
+
+First, feel free to modify the server configuration file below. It contains auto-explanatory comments that describe what the various options are for:
 
 - `config/server/nexus.conf`
 
-Then, modify these files which are used to generate the certificates:
+Next, a `PREFIX` environment variable must be set to specify where nexus-server will be installed. Within that directory, a `nexus-server` directory will be created. Below, we set `PREFIX` to the home directory of the current user. This means nexus-server will be installed into `$HOME/nexus-server`.
+
+```
+export PREFIX=$HOME
+````
 
-1. `config/certs/ca.info`
-1. `config/certs/nexus-server.info`
+If bash is your system shell, you can add the `export` line above to the `.bashrc` file in your home directory. This way, whenever you open a new terminal, the `PREFIX` variable will already be set.
 
-Next, run the following to build and install nexus-server. Note that the `PREFIX` environment variable must be set to the root directory where nexus-server will be installed. Within that directory, a `nexus-server` directory will be created. Below, we set `PREFIX` to `/usr/local`. This means nexus-server will be installed into `/usr/local/nexus-server`:
+Then, run the following commands to build and install nexus-server for development:
 ```
 make build_srv
-sudo -E make install_prod_srv PREFIX=/usr/local
+make install_dev_srv
 ```
 
-## Running nexus-server (prod)
-
-The installation script creates a systemd service named "nexus-server". It can then be started like any other systemd service with:
+## Running nexus-server (dev)
 
 ```
-sudo systemctl start nexus-server
+make run_srv PREFIX=$HOME
 ```
 
-Furthermore, usual systemctl commands can be used to control the service:
-
-- `sudo systemctl status nexus-server` to check whether the service is running
-- `sudo systemctl stop nexus-server` to stop the service
-- `sudo systemctl enable nexus-server` to enable the service at boot time
-- `sudo systemctl disable nexus-server` to disable the service at boot time
-
-## Updating nexus-server binaries (prod)
+## Updating nexus-server binaries (dev)
 
+During development, the server code is constantly modified. To build, update and run the server after a change, simply stop nexus-server by pressing CTRL-C and run:
 ```
-make build_srv
-sudo systemctl stop nexus-server
-sudo -E make update_srv PREFIX=/usr/local
-sudo systemctl start nexus-server
+make build_srv update_srv run_srv
 ```
 
-## Uninstalling nexus-server (prod)
+## Uninstalling nexus-server (dev)
 
 ```
-sudo systemctl stop nexus-server
-sudo -E make uninstall_prod_srv PREFIX=/usr/local
+make uninstall_dev_srv
 ```
 
+<!-- ============================================================================================================== -->
 # Building and running nexus clients
 
 ## Building nexush for development (dev)
@@ -162,116 +187,13 @@ A variety of tests can be performed to locate potentiel bugs in the code.
 These tests expect a template that includes "xubuntu" in its name, otherwise it will spill out errors.
 Furthermore, make sure the login you specify below has access to this template and has most capabilities enabled. 
 
-To run the tests, make sure the nexus-server for development is running, then execute:
+To run the tests, make sure nexus-server for development is running, then execute:
 ```
 make tests LOGIN=tests@nexus.org
 ```
 
-
-
-
-
-
-
-
-
-
-
-<!--
-# Requirements
-
-First and foremost, **nexus-server** requires a Linux kernel with KVM. KVM is a module that provides a userspace API to access hardware-assisted virtualization instructions, thus "transforming" the Linux kernel into a hypervisor. To make sure the KVM module is loaded into the kernel, run:
-```
-lsmod|grep kvm
-```
-If you don't get an output similar to the one below, it means the KVM module is not loaded into the kernel. A possible cause for this behavior is if you didn't enable hardware virtualization support in your machine's BIOS/firmware. Note that if you have an AMD CPU, you should see `kvm_amd` in place of `kvm_intel`:
-```
-kvm_intel             294912  0
-kvm                   782336  1 kvm_intel
-```
-
-The host machine on which **nexus-server** will be running needs the following software:
-
-- QEMU system 6.0.0 or newer
-- `qemu-img` to manipulate VM disk images
-- `guestfish` to export/import files from VM disk images
-- `uuidgen` to generate UUIDs from bash
-
-Note that Ubuntu 20.04 ships with QEMU 4.2 which is too old, but Ubuntu 22.04 ships with QEMU 6.2 and Ubuntu 24.04 with QEMU 8.2.
-
-The latest stable version of QEMU can be downloaded from [https://www.qemu.org/download/](https://www.qemu.org/download/). To compile QEMU from source, read the [Compiling QEMU from source](##Compiling-QEMU-from-source) section at the end of this document.
-
-To obtain, build, and install **nexus-server**, these additionnal software are required:
-
-- git
-- golang 1.18 or newer
-- GNU make
-- certtool
-
-To install all the above-mentioned packages on a Ubuntu system, run:
-```
-sudo apt-get install -y qemu-system-x86 qemu-utils guestfish uuid-runtime git golang-go make gnutls-bin
-```
-
-On Ubuntu 24.04, the following additionnal package must be installed:
-```
-sudo apt-get install -y qemu-system-modules-spice
-```
-
-## Note about Go compilers
-
-To compile **nexus-server**, Go version 1.18 or above is required. Snap and flatpak package repositories provide recent enough versions. Alternatively, a toolchain from the official Go website can be obtained at [https://go.dev/dl/](https://go.dev/dl/).
-
-# Building and installing nexus-server
-
-To make the installation of **nexus-server** as easy as a possible, a `Makefile` is provided. It automates most of the steps required to build and install the service.
-
-Note that `guestfish` (package of the same name) is required. It should normally be ran as a non-root user. However, on Ubuntu, it requires root access due to a side-effect of Ubuntu's wrong file permissions with `/boot/vmlinuz*` files ([more info here](https://libguestfs.org/guestfs-faq.1.html)). Consequently, the command below must be run in order to restore the correct file permissions:
-```
-sudo chmod 0644 /boot/vmlinuz*
-```
-
-**BEWARE**: whenever a new kernel is installed, its permission **must be changed again**, otherwise importing or exporting files from VMs won't work!
-
-## Installation script
-
-As mentioned above, the script is simply a `Makefile` located at the root of the git repository.
-
-## Configuring certificates
-
-Certificates are required to ensure encrypted communication (TLS) with nexus clients. The installation script creates the required certificates, but you must still edit a few fields specific to your system.
-
-Edit `config/certs/nexus-server.info` and change the following fields to your liking: `organization`, `cn`, `dns_name` and `ip_address`.
-Also, edit `config/certs/ca.info` and change the `cn` field accordingly.
-
-## Configuring the service
-
-By default, the service listens to port 1077. If you would like the service (API) to listen to a different port, edit `config/systemd/nexus-server.service` and  change the line ending in `-p 1077` with a port in the range [1025,1099] inclusive. If you wish to change this range, modify `APIPortMin` and `APIPortMax` in `src/server/consts/consts.go`. 
-
-Furthermore, each running VM listens to a port randomly chosen in the range [1100,65535] inclusive. If you wish to change this range, modify `VMSpiceMinPort` and `VMSpiceMaxPort` in `src/server/consts/consts.go`.
-
-## Building nexus-server and installing nexus-server
-
-A `PREFIX` environment variable is used to specify where nexus-server must be installed. Let's assume we want `nexus-server` to reside in `/usr/local/`.
-
-Run the following commands:
-```
-make build_srv
-sudo -E make install_prod_srv PREFIX=/usr/local
-```
-
-The last command above:
-
-- Creates a `nexus` user and group to run the service.
-- Creates the file/directory hierarchy in the specified directory.
-- Creates and signs the certificates.
-- Add a crond task required by the service.
-- Integrates the service with systemd.
-- Creates a `users.json` file with user `admin@nexus.org`, featuring all capabilities. Its default password is `12345678`, therefore it is **highly** recommended to change it as described below.
-
-The `genpwd` tools located in `PREFIX/nexus-server/bin/` can be used to obtain the hash of a password typed on the keyboard. This is very useful when wanting to update a user's password, such as `admin@nexus.org`  right after nexus' initial installation.
-
-## Creating initial templates
+<!-- ============================================================================================================== -->
+# Creating initial templates
 
 To create VMs, at least one template is required. However, none is provided in the base install.
 
@@ -307,23 +229,8 @@ rm PREFIX/nexus-server/data/templates/7ac36ad7-a960-4c87-916a-4c1068d19b59.tar
 
 Feel free to repeat the operation above with as many templates as you like.
 
-## Updating a template
-
-The `vm_run` script, located in `PREFIX/nexus-server/bin/`, is a convenience script that runs a VM on the specified image file(s) and it can be used to update a template's disk image. Here is its usage:
-```
-vm_run - launch a VM on the specified disk image(s).
-The VM is configured with 4 CPUs and 4G of RAM.
-
-Usage: vm_run -d disk -i iso
-disk    the disk image to use (typically a .qcow file)
-iso     the CD/DVD-ROM image to use (typically an .iso file)
-
-At least one image must be specified.
-```
-
-Before updating a template's disk image, **make absolutely sure that it IS NOT used by any VMs**, otherwise all VMs based on this template will be corrupted!
-
-## Copy a template from another server
+<!-- ============================================================================================================== -->
+# Copy a template from another server
 
 To copy a template from another nexus server, `rsync` must be used instead of `scp` as it supports sparse files. Sparse files are files where consecutive zeros are not actually stored in data blocks. Template files (qcow) might appear much bigger than they really are as `ls` doesn't show the real block usage. To display the real size of a file, use `du -h FILE` instead.
 
@@ -336,107 +243,115 @@ mkdir /path_to_templates/4913a2bb-edfe-4dfe-af53-38197a44523b
 rsync -P --sparse -r 4913a2bb-edfe-4dfe-af53-38197a44523b  destination_server:/path_to_templates/4913a2bb-edfe-4dfe-af53-38197a44523b
  ```
 
-## Controlling nexus-server with systemd
+<!-- ============================================================================================================== -->
+# Additional tools
+
+The `genpwd` tools, located in `PREFIX/nexus-server/bin/`, can be used to obtain the hash of a password typed on the keyboard. This can be useful when wanting to update a password by directly editing the config file that stores encrypted user passwords (`PREFIX/nexus-server/config/users.json`).
+
+## Compiling QEMU from source
+
+1. Retrieve QEMU' source code from [https://www.qemu.org/download/](https://www.qemu.org/download/)
+1. Decompress the archive and go into QEMU' source directory:
+   ```
+   tar vfxJ qemu-7.0.0.tar.xz
+   cd qemu-7.0.0
+   ```
+1. Install the required dependencies:
+   ```
+   sudo apt-get install -y build-essential meson libspice-server-dev libattr1-dev libcap-ng-dev libusb-1.0-0-dev libusbredirparser-dev
+   ```
+1. Enable spice (for remote desktop), virtfs (for shared folders), libusb (for usb passthrough) and usb-redir (for usb redirection over the network) in QEMU's config:
+   ```
+   ./configure --enable-spice --enable-virtfs --enable-libusb --enable-usb-redir
+   ```
+1. Compile QEMU:
+   ```
+   make
+   ```
+1. Install QEMU system-wide into `/usr/local/bin`:
+   ```
+   make install
+   ```
+
+<!-- ============================================================================================================== -->
+# Details about requirements
 
-The nexus-server service can now be started with:
+## Linux kernel with KVM
+
+A Linux kernel with KVM is required. KVM is a module that provides a userspace API to access hardware-assisted virtualization instructions, thus "transforming" the Linux kernel into a hypervisor. To make sure the KVM module is loaded into the kernel, run:
 ```
-sudo systemctl start nexus-server
+lsmod|grep kvm
 ```
-
-To check whether the service is running properly:
+If you don't get an output similar to the one below, it means the KVM module is not loaded into the kernel. A possible cause for this behavior is if you didn't enable hardware virtualization support in your machine's BIOS/firmware. Note that if you have an AMD CPU, you should see `kvm_amd` in place of `kvm_intel`:
 ```
-systemctl status nexus-server
+kvm_intel             294912  0
+kvm                   782336  1 kvm_intel
 ```
 
-You can then use any of the commands below to control your newly created `nexus-server` service. Only the `status` command does not require root privilege.
+## Required software
 
-| Command                             | Description                                              |
-|---                                  |---                                                       |
-| `systemctl status nexus-server`     | display the service's status                             |
-| `systemctl start nexus-server`      | start the service                                        |
-| `systemctl stop nexus-server`       | stop the service                                         |
-| `systemctl restart nexus-server`    | restart the service                                      |
-| `systemctl reload nexus-server`     | reload the service                                       |
-| `systemctl enable nexus-server`     | enable the service at boot time                          |
-| `systemctl disable nexus-server`    | disable the service at boot time                         |
-| `systemctl daemon-reload`           | reload the daemon (to call when service file is updated) |
-| `journalctl -f --unit nexus-server` | display the service's log in "following" mode            |
+The following software is required to run nexus-server:
 
-## Public key for client access
+- QEMU system 6.0.0 or newer
+- `qemu-img` to manipulate VM disk images
+- `guestfish` to export/import files from VM disk images
+- `uuidgen` to generate UUIDs from bash
 
-Make sure to transmit the public key (certificate) located in `PREFIX/nexus-server/certs/ca-cert.pem` to any nexus client as they will need this key to authentify themselves and communicate with the server.
+Note that Ubuntu 20.04 ships with QEMU 4.2 which is too old, but Ubuntu 22.04 ships with QEMU 6.2 and Ubuntu 24.04 with QEMU 8.2.
 
-## Updating nexus-server
+The latest stable version of QEMU can be downloaded from [https://www.qemu.org/download/](https://www.qemu.org/download/). To compile QEMU from source, read the [Compiling QEMU from source](##Compiling-QEMU-from-source) section at the end of this document.
 
-Whenever a new version of **nexus-server** is released, the binaries must be updated.
+To obtain, build, and install nexus-server, these additionnal software are required:
 
-Go to the root source directory `nexus-server.git` and as a non-root user, build the binaries:
-```
-make build_srv
-```
+- git
+- golang 1.18 or newer
+- GNU make
+- certtool
 
-Then, as root (or sudo), stop the **nexus-server** systemd service:
+To install all the above-mentioned packages on a Ubuntu system, run:
 ```
-sudo systemctl stop nexus-server
+sudo apt-get install -y qemu-system-x86 qemu-utils guestfish uuid-runtime git golang-go make gnutls-bin
 ```
 
-Next, as root (or sudo), update **nexus-server**:
+On Ubuntu 24.04, the following additionnal package must be installed:
 ```
-sudo -E make update_srv PREFIX=/usr/local
+sudo apt-get install -y qemu-system-modules-spice
 ```
 
-Finally, as root (or sudo), start the **nexus-server** systemd service:
-```
-sudo systemctl start nexus-server
-```
+## Note about Go compilers
 
-## Uninstalling nexus-server
+To compile nexus-server, Go version 1.18 or above is required. Snap and flatpak package repositories provide recent enough versions. Alternatively, a toolchain from the official Go website can be obtained at [https://go.dev/dl/](https://go.dev/dl/).
 
-**Beware this will delete ALL installed VMs and templates!**
+## Important: guestfish on Ubuntu
 
-First, as root (or sudo), stop the **nexus-server** systemd service:
+As mentioned above, `guestfish` is used to import or export files from VMs. Normally, it should be executed as a non-root user (as is done by nexus-server). However, on Ubuntu specifically, `guestfish` requires root access due to a side-effect of Ubuntu's wrong file permissions with `/boot/vmlinuz*` files ([more info here](https://libguestfs.org/guestfs-faq.1.html)). Consequently, restoring the correct file permissions is necessary for nexus-server to work properly:
 ```
-sudo systemctl stop nexus-server
+sudo chmod 0644 /boot/vmlinuz*
 ```
 
-To uninstall **nexus-server**, go to its root source directory `nexus-server.git` and as sudo (or root), run:
-```
-sudo -E make uninstall_prod_srv PREFIX=/usr/local
-```
--->
+However, each time a new kernel is installed, the permissions will be wrong again. Therefore, `chmod` must be executed every time a new kernel is installed to fix its permissions! When installing nexus-server for production, a cron job service is created which takes care of setting the right kernel permissions. However, this is not the case when installing the development version of nexus-server. In this case. you will have to manually change your kernel permissions as described above.
 
+<!--
+## Public key for client access
 
+Make sure to transmit the public key (certificate) located in `PREFIX/nexus-server/certs/ca-cert.pem` to any nexus client as they will need this key to authentify themselves and communicate with the server.
 
+## Updating a template
 
-<!--
-# Compiling QEMU from source
+The `vm_run` script, located in `PREFIX/nexus-server/bin/`, is a convenience script that runs a VM on the specified image file(s). It can be used to update a template's disk image. Here is its usage:
+```
+vm_run - launch a VM on the specified disk image(s).
+The VM is configured with 4 CPUs and 4G of RAM.
 
-1. Retrieve QEMU' source code from [https://www.qemu.org/download/](https://www.qemu.org/download/)
-1. Decompress the archive and go into QEMU' source directory:
-   ```
-   tar vfxJ qemu-7.0.0.tar.xz
-   cd qemu-7.0.0
-   ```
-1. Install the required dependencies:
-   ```
-   sudo apt-get install -y build-essential meson libspice-server-dev libattr1-dev libcap-ng-dev libusb-1.0-0-dev libusbredirparser-dev
-   ```
-1. Enable spice (for remote desktop), virtfs (for shared folders), libusb (for usb passthrough) and usb-redir (for usb redirection over the network) in QEMU's config:
-   ```
-   ./configure --enable-spice --enable-virtfs --enable-libusb --enable-usb-redir
-   ```
-1. Compile QEMU:
-   ```
-   make
-   ```
-1. Install QEMU system-wide into `/usr/local/bin`:
-   ```
-   make install
-   ```
--->
+Usage: vm_run -d disk -i iso
+disk    the disk image to use (typically a .qcow file)
+iso     the CD/DVD-ROM image to use (typically an .iso file)
 
+At least one image must be specified.
+```
+
+Before updating a template's disk image, **make absolutely sure it IS NOT used by any VMs**, otherwise all VMs based on this template will be corrupted!
 
-<!--
 ## HOWTO: Exporting a VM disk image
 
 Given each VM's disk is an overlay baked by a template's disk image, exporting a VM's disk image into a dedicated and independant file is slightly tricky. Below are the steps to do so.