Repository: eslam-gomaa/kptop (language: python)

Issue:
Clean up && organize



Discussion / hints:

Fix patch:
diff --git a/README.md b/README.md
index 99e5f1d..0f25a0c 100644
--- a/README.md
+++ b/README.md
@@ -1,74 +1,56 @@
-# Kube-Prometheus-Top [ kptop ]
+<!-- # Kube-Prometheus-Top [ kptop ] -->
 
-A Python tool that provides Monitoring for Kubernetes Nodes, Pods, Containers, and PVCs resources on the terminal through Prometheus metircs
+<!-- A Python tool that provides Monitoring for Kubernetes Nodes, Pods, Containers, and PVCs resources on the terminal through Prometheus metircs -->
 
 
-https://user-images.githubusercontent.com/33789516/208325820-27111e21-81cb-446d-a5a4-0d73a615ea70.mp4
+<!-- https://user-images.githubusercontent.com/33789516/208325820-27111e21-81cb-446d-a5a4-0d73a615ea70.mp4 -->
 
 
 
-<br>
-
-## Motivation
-
-The resources metrics provided by the K8s APIs are very limited compared what what's scraped by Prometheus.
-
-This tool is using Prometheus as a data source for metrics to display all the needed informations right on the terminal.
+# Kube-Prometheus-Top [ KPtop ]
 
 <br>
 
-## Project Status
-<br>
+A Python tool that offers beautiful CLI monitoring based on Prometheus metrics, with Kubernetes integration through PodPortForward
 
-- [x] [Top Nodes](#top_nodes)
-   - [x] [-o cloud  //  -o json](#top_nodes_option)
-- [x] [Live monitoring for Nodes](#monitor_node)
-- [x] [Top Pods](#top_pods)
-- [x] [Live monitoring for Pods/Containers](#monitor_pod)
-- [x] [Top PVCs](#top_pvcs)
+Allowing you to create your own custom CLI dashboards & CLI commands with custom layouts, variables, CLI arguments !
 
-> Additional
+**KPtop has been refactored to work as a general CLI monitoring tool, deprecating all hardcoded metrics & dashboards. 🚀**
 
-- [x] [Check the connection with Prometheus Server](#verify_prometheus)
-- [x] [Check the existence of the needed Prometheus metrics](#check_metrics) <sub>[ [good for similar use cases](https://github.com/eslam-gomaa/kptop/issues/15) ]</sub>
 
 <br>
 
----
+# Motivation
+Prometheus is widely used with different kinds of metrics - Let's make CLI monitoring more powerful with Prometheus data. ✊
 
-<br>
 
-## Installation
-<a id=installation></a>
 
-> Compatible with Python 3.6+
-
-[on PyPi](https://pypi.org/project/kptop)
+<br>
 
-```bash
-pip3 install kptop --upgrade
-```
 
+## [KPtop Documentation](https://eslam-gomaa.github.io/kptop) 🍉
 
 <br>
 
+
 ---
 
+
 ## Environment Variables
 <a id=env></a>
 
 | ENV | Description                                                                          | Default | Required |
 | ----- | -------------------------------------------------------------------------------------- | --------- | ---------- |
-| `KPTOP_CONNECTION_METHOD`    | The way to connect to Prometheus server<br />**options:** ['prometheus_endpoint', 'pod_portForward'] | <br />      | Yes      |
+| `KPTOP_CONNECTION_METHOD`    | The way to connect to Prometheus server<br>|**options:** [`prometheus_endpoint`, `pod_portForward`] | True  |
 
-There are 2 options to connect KPtop to Prometheus:
+> There are 2 options to connect KPtop to Prometheus:
 1. With a Prometheus server endpoint
     - Suitable if Prometheus is exposed (with an ingress for example)
 2. With 'K8s pod port-forward' (Through K8s API-Server)
-    - Suitable if Prometheus is Not exposed (Only rechable within the K8s cluster)
+    - Suitable if Prometheus is Not exposed (Only rechable with K8s cluster access)
 
 
-#### `prometheus_endpoint` ENVs
+### `prometheus_endpoint` ENVs
 
 | ENV | Description                                                     | Default | Required |
 | ----- | ----------------------------------------------------------------- | --------- | ---------- |
@@ -81,7 +63,7 @@ There are 2 options to connect KPtop to Prometheus:
 
 <br>
 
-#### `pod_portForward` ENVs
+### `pod_portForward` ENVs
 
 | ENV | Description                                            | Default | Required |
 | ----- | -------------------------------------------------------- | --------- | ---------- |
@@ -93,48 +75,54 @@ There are 2 options to connect KPtop to Prometheus:
 
 <br>
 
-#### General ENVs
+### General ENVs
 
+| ENV                                  | Description                                                  | Default               | Required |
+| ------------------------------------ | ------------------------------------------------------------ | --------------------- | -------- |
+| `KPTOP_START_GRAPHS_WITH_ZERO`       | By default graphs begin with '0'  to let the graph take its full hight | True                  | NO       |
+| `KPTOP_LOGGING_DIR`                  | Choose a different logging directory                         | /tmp/                 | NO       |
+| `KPTOP_GRAPH_WIDTH`                  | Choose a custom graphs width                                 | 45                    | NO       |
+| `KPTOP_DEFAULT_DASHBOARDS_DIRECTORY` | Default directory contains the dashboards yaml files         | /var/kptop/dashboards | NO       |
+| `KPTOP_DEFAULT_COMMANDS_DIRECTORY`   | Default directory contains the commands yaml files           | /var/kptop/commands   | NO       |
 
-| ENV | Description                                                            | Default | Required |
-| ----- | ------------------------------------------------------------------------ | --------- | ---------- |
-| `KPTOP_NODE_EXPORTER_NODE_LABEL`    | node exporter "node label"                                             | "node"  | NO       |
-| `KPTOP_START_GRAPHS_WITH_ZERO`    | By default graphs begin with '0'  to let the graph take its full hight | True    | NO       |
-| `KPTOP_LOGGING_DIR`    | Choose a different logging directory                                   | /tmp/   | NO       |
-| `KPTOP_GRAPH_WIDTH`    | Choose a custom graphs width                                           | 45      | NO       |
 
 
 <br>
 
-## CLI Arguments
+---
+
+# CLI Arguments
 <a id=cli></a>
 
 
-| ENV                          | Description                                                  | Default                                                      |
-| ---------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| `--namespace`,  `-n`         | Specify a Kubernetes Namespace                               | default                                                      |
-| `--all-namespaces`,  -A      |                                                              |                                                              |
-| `--container`,  `-c`         | Specify a container                                          |                                                              |
-| `--interval`,  `-i`          | Live monitoring update interval                              | 8  <br> <sub>[**NOTE**: the actuall update depends on the Prometheus scaping interval (15s by default)]</sub> |
-| `--debug`,  `-d`             | Enable debugging logging mode                                | False                                                        |
-| `--verify-prometheus`,  `-V` | Verify connectivity to Prometheus server & check the existence of the needed exporters |                                                              |
-| `--sort-by-mem-usage`,  `-s` | Sort top result by memory usage                              | False                                                        |
-| `--check-metrics` ,  `-C`    | Check the existence of the needed metrics, _needs to be done with_  `-V` | False                                                        |
+| ENV                         | Description                                                  |
+| --------------------------- | ------------------------------------------------------------ |
+| `--dashboard` , `-D`        | Specify a dashboard YAML file                                |
+| `--command` , `-C`          | Specify a command YAML file                                  |
+| `--list-dashboards` , `-ld` | List all the available dashboards                            |
+| `--list-commands` , `-lc`   | List all the available commands                              |
+| `--debug`,  `-d`            | Enable debugging logging mode                                |
+| `--version`,  `-V`          | Show kptop version                                           |
+| `--print-layout`,  `-pl`    | Print the dashboard empty layout                             |
+| `--vhelp` ,  `-vh`          | Print the arguments including "the variables arguments defined in your command yaml file" |
+
 
 <br>
 
 ---
 
-<br>
 
-## Usage
+# Usage
+
+
+## [1] Add the Prometheus connection Environment Variables
 
+## Example
 
 <br>
 
-Add the ENVs and you're good to go.
 
-_*Examples*_
+_**Example**_
 
 ```bash
 export KPTOP_CONNECTION_METHOD="pod_portForward"
@@ -143,443 +131,133 @@ export KPTOP_PROMETHEUS_POD_PORT="9090"
 export KPTOP_PROMETHEUS_POD_NAMESPACE="monitoring"
 ```
 
-> Or
+| Or
 
 ```bash
 export KPTOP_CONNECTION_METHOD="prometheus_endpoint"
 export KPTOP_PROMETHEUS_SERVER="http://prometheus.home-lab.com"
 ```
 
-<br>
-
-### Top nodes 
-<a id=top_nodes></a>
-
-```bash
-kptop nodes
-```
-
-```bash
-NODE      MEM TOTAL    MEM USAGE    MEM FREE      CPU CORES  CPU USAGE%      RUNNING PODS
-worker-1  19.6 gb      16.92 gb     2.69 gb               6  9%                        14
-worker-2  19.6 gb      9.52 gb      10.08 gb              6  9%                        27
-```
-
-
-**[kptop nodes --option / -o](https://github.com/eslam-gomaa/kptop/releases/tag/v0.0.6) 🎉**
-<a id=top_nodes_option></a>
-
-
-```bash
-kptop nodes -o json --colorize-json
-```
-
-> Under testing (currently tested with EKS)
-
-```bash
-kptop nodes -o cloud
-```
-
 
 <br>
 
+## [2] Configure the location of your dashboards & commands
+
 
-### Live monitoring for Nodes
-<a id=monitor_node></a>
+Example:
 
 ```bash
-kptop node <NODE>
+export KPTOP_DEFAULT_DASHBOARDS_DIRECTORY="/Users/YOU/kptop/examples/dashboards"
+export KPTOP_DEFAULT_COMMANDS_DIRECTORY="/Users/YOU/kptop/examples/dashboards"
 ```
 
 
-![image](https://user-images.githubusercontent.com/33789516/208190533-cb719cef-e76c-4c6d-8686-2f32edae15c6.png)
-
 
+## Run dashboards / commands !
 
-<br>
+### [Dashboards Doc](https://eslam-gomaa.github.io/kptop/dashboards)
+### [Commands Doc](https://eslam-gomaa.github.io/kptop/commands)
 
-### Top pods
-<a id=top_pods></a>
 
 ```bash
-kptop pods -n <NAMESPACE>
-```
-
-```
-kptop pods -n elk-stack
-
-NAMESPACE    POD                                      MEM LIMIT    MEM USAGE    MEM USAGE %    MEM USAGE MAX    MEM FREE    CPU LIMIT    CPU USAGE
-elk-stack    elasticsearch-master-0                   2.0 gb       1.38 gb      68%            2.0 gb           635.25 mb   1000m        0.04m
-elk-stack    elasticsearch-master-1                   2.0 gb       1.49 gb      74%            2.0 gb           522.05 mb   1000m        0.03m
-elk-stack    strimzi-filebeat-filebeat-f8ms7          200.0 mb     85.73 mb     42%            174.16 mb        114.27 mb   1000m        0.02m
-elk-stack    haproxy-ingress-filebeat-filebeat-pq2wf  200.0 mb     87.73 mb     43%            171.31 mb        112.27 mb   1000m        0.03m
-elk-stack    strimzi-filebeat-filebeat-r7dht          200.0 mb     119.12 mb    59%            199.52 mb        80.88 mb    1000m        0.02m
-elk-stack    haproxy-ingress-filebeat-filebeat-lzqdt  200.0 mb     98.66 mb     49%            199.57 mb        101.34 mb   1000m        0.02m
-elk-stack    my-kibana-kibana-79448f7fb7-wf4t6        2.0 gb       342.87 mb    16%            618.07 mb        1.67 gb     1000m        0.02m
-elk-stack    my-logstash-logstash-0                   1.5 gb       1008.22 mb   65%            1.21 gb          527.78 mb   1000m        0.02m
+kptop --list-dashboards
 ```
 
 ```
-kptop pod -n kube-system
-
-NAMESPACE    POD                                              MEM LIMIT    MEM USAGE    MEM USAGE%    MEM USAGE MAX    MEM FREE    CPU LIMIT    CPU USAGE
-kube-system  coredns-558bd4d5db-nfcjq                         170.0 mb     26.0 mb      15%           42.77 mb         144.0 mb    ---          0.0m
-kube-system  coredns-558bd4d5db-vcstr                         170.0 mb     17.45 mb     10%           24.04 mb         152.55 mb   ---          0.0m
-kube-system  etcd-master                                      ---          85.02 mb     ---           391.7 mb         ---         ---          0.02m
-kube-system  kube-apiserver-master                            ---          635.97 mb    ---           731.13 mb        ---         ---          0.09m
-kube-system  kube-controller-manager-master                   ---          95.55 mb     ---           145.41 mb        ---         ---          0.03m
-kube-system  kube-proxy-q6nr7                                 ---          27.46 mb     ---           58.91 mb         ---         ---          0.0m
-kube-system  kube-proxy-q489q                                 ---          21.98 mb     ---           63.0 mb          ---         ---          0.0m
-kube-system  kube-proxy-bghp6                                 ---          22.35 mb     ---           64.1 mb          ---         ---          0.0m
-kube-system  kube-scheduler-master                            ---          37.04 mb     ---           61.68 mb         ---         ---          0.0m
-kube-system  nfs-subdir-external-provisioner-b97f4d9f5-bjp2h  ---          9.43 mb      ---           37.48 mb         ---         ---          0.0m
+DASHBOARD      CREATION TIME        UPDATE TIME
+pods           29-06-2024 19:43:19  29-06-2024 19:43:19
+test           29-06-2024 19:27:04  29-06-2024 19:27:04
+pvcs           29-06-2024 12:33:02  29-06-2024 12:33:02
+strimzi-kafka  29-06-2024 12:33:02  29-06-2024 12:33:02
 ```
 
+[**Example dashboard > pods.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/dashboards/pods.yml)
 
-<br>
-
-### Live monitoring for Pods
-<a id=monitor_pod></a>
 
 ```bash
-kptop pod <POD> -n <NAMESPACE>
+kptop --dashboard pods
 ```
 
-![image](https://user-images.githubusercontent.com/33789516/208233405-f07bab04-896e-4d80-bed5-f92deae91e19.png)  
-
-![image](https://user-images.githubusercontent.com/33789516/208233544-e51e1ec2-a4c9-4615-9f9f-32156937a18c.png)
-
-![image](https://user-images.githubusercontent.com/33789516/208233652-ed26534f-f5f1-486f-a3df-87800ebc8b73.png)
-
-![image](https://user-images.githubusercontent.com/33789516/208233865-9026acfa-ad64-475a-8337-8e8edab1fcb9.png)
-
-
+![alt text](./docs/images/dashboard-pods.png)
 
 <br>
 
-### Live monitoring for Containers
-<a id=monitor_container></a>
+[**Example dashboard > pvcs.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/dashboards/pvcs.yml)
 
 ```bash
-kptop pod <POD> -n <NAMESPACE> -c <CONTAINER>
+kptop --dashboard pvcs
 ```
 
-![image](https://user-images.githubusercontent.com/33789516/208234009-e3656b8b-6fdb-4f72-bb87-15332c67e3d7.png)
-
+![alt text](./docs/images/dashboard-pvcs.png)
 
 
 <br>
 
-### Top PVCs
-<a id=top_pvcs></a>
-
-
-```bash
-kptop pvcs <NAMESPACE>
-```
- 
-> **NOTE:** in this example, all VPCs have the same capacity because this is a testing environment (using [nfs-provisioner](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner))
-
+[**Example dashboard > strimzi-kafka-test.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/dashboards/strimzi-kafka-test.yml)
 
 ```bash
-kptop pvcs --all-namespaces
+kptop --dashboard strimzi-kafka-test -n kafka
 ```
 
-```
-NAMESPACE    PVC                                          VOLUME                CAPACITY    USED      USED %    FREE      FREE %
-elk-stack    elasticsearch-master-elasticsearch-master-0  elasticsearch-master  123.14 gb   21.42 gb  17%       95.43 gb  77%
-elk-stack    elasticsearch-master-elasticsearch-master-1  elasticsearch-master  123.14 gb   21.42 gb  17%       95.43 gb  77%
-elk-stack    elasticsearch-master-elasticsearch-master-2  elasticsearch-master  ?           ?         ?         ?         ?
-kafka        data-0-kafka-cluster-region1-kafka-0         data-0                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-0-kafka-cluster-region1-kafka-1         data-0                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-0-kafka-cluster-region1-kafka-2         data-0                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-0-kafka-cluster-region2-kafka-0         data-0                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-0-kafka-cluster-region2-kafka-1         data-0                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-0-kafka-cluster-region2-kafka-2         data-0                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-1-kafka-cluster-region1-kafka-0         data-1                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-1-kafka-cluster-region1-kafka-1         data-1                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-1-kafka-cluster-region1-kafka-2         data-1                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-2-kafka-cluster-region1-kafka-0         data-2                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-2-kafka-cluster-region1-kafka-1         data-2                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-2-kafka-cluster-region1-kafka-2         data-2                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-3-kafka-cluster-region1-kafka-0         data-3                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-3-kafka-cluster-region1-kafka-1         data-3                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-3-kafka-cluster-region1-kafka-2         data-3                123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-kafka-cluster-region1-zookeeper-0       data                  123.14 gb   21.42 gb  17%       95.43 gb  77%
-kafka        data-kafka-cluster-region2-zookeeper-0       data                  123.14 gb   21.42 gb  17%       95.43 gb  77%
-prometheus   my-prometheus-alertmanager                   storage-volume        123.14 gb   21.42 gb  17%       95.43 gb  77%
-prometheus   my-prometheus-server                         storage-volume        123.14 gb   21.42 gb  17%       95.43 gb  77%
-```
 
+![alt text](./docs/images/dashboard-strimzi-kafka-test.png)
 
-<br>
 
+---
 
-### Verify Prometheus connectivity
-<a id=verify_prometheus></a>
 
 ```bash
-kptop --verify-prometheus
+kptop --list-commands
 ```
 
-<details>
-    <summary>
-        <b style="font-size:14px" >Sample output</b>
-    </summary>
-    <br>
-
-```bash 
-Verifying Prometheus connection: Connected                     
-{
-  "connected": true,
-  "status_code": 200,
-  "reason": "",
-  "fail_reason": ""
-}
-
-Verifying Prometheus Exporters:
-
-* Node Exporter:  Found             
-{
-  "success": true,
-  "fail_reason": "",
-  "result": {
-    "found_versions": {
-      "1.3.1": "2"
-    }
-  }
-}
-
-* Kubernetes Exporter:  Found           
-{
-  "success": true,
-  "fail_reason": "",
-  "result": {
-    "found_git_versions": {
-      "v1.21.0": "3",
-      "v1.21.14": "1"
-    }
-  }
-}
 ```
-    
-</details>
-
-
-<br>
-
----
+COMMAND    CREATION TIME        UPDATE TIME
+pods       29-06-2024 12:33:02  29-06-2024 12:33:02
+pvcs       29-06-2024 12:33:02  29-06-2024 12:33:02
+pods-wide  29-06-2024 12:33:02  29-06-2024 12:33:02
+```
 
-### Check Prometheus metrics
-<a id=check_metrics></a>
 
+[**Example command > pods-wide.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/commands/pods-wide.yml)
 
 ```bash
-kptop --verify-prometheus --check-metrics
+kptop --command pods-wide -n kafka
 ```
 
-
-<details>
-    <summary>
-        <b style="font-size:14px" >Sample output</b>
-    </summary>
-    <br>
-
-```bash 
-Verifying Prometheus connection: Connected                     
-{
-  "connected": true,
-  "status_code": 200,
-  "reason": "",
-  "fail_reason": ""
-}
-
-Verifying Prometheus Exporters:
-
-* Node Exporter:  Found             
-{
-  "success": true,
-  "fail_reason": "",
-  "result": {
-    "found_versions": {
-      "1.3.1": "2"
-    }
-  }
-}
-
-* Kubernetes Exporter:  Found           
-{
-  "success": true,
-  "fail_reason": "",
-  "result": {
-    "found_git_versions": {
-      "v1.21.0": "3",
-      "v1.21.14": "1"
-    }
-  }
-}
- 
-  0:00:00 0:00:00 Checking Metrics  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%  [ container_fs_writes_bytes_total ]
-+---------------------------------------------------+---------------+-----------+-----------+
-| METRIC                                            | EXPORTER      | STATE     | COMMENT   |
-+===================================================+===============+===========+===========+
-| node_memory_MemFree_bytes                         | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_MemAvailable_bytes                    | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_MemTotal_bytes                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_Cached_bytes                          | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_Buffers_bytes                         | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_SwapTotal_bytes                       | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_SwapFree_bytes                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_memory_SwapCached_bytes                      | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_cpu_seconds_total                            | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_load1                                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_load5                                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_load15                                       | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| machine_cpu_physical_cores                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| machine_cpu_sockets                               | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| up                                                | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_boot_time_seconds                            | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_filesystem_size_bytes                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_filesystem_avail_bytes                       | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_filesystem_avail_bytes                       | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_network_receive_bytes_total                  | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_network_transmit_bytes_total                 | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_disk_written_bytes_total                     | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| node_disk_read_bytes_total                        | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| machine_cpu_cores                                 | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| kubelet_running_pods                              | node_exporter | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_last_seen                               | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_memory_working_set_bytes                | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_memory_max_usage_bytes                  | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_spec_memory_limit_bytes                 | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_memory_cache                            | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_spec_memory_swap_limit_bytes            | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_cpu_load_average_10s                    | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_cpu_usage_seconds_total                 | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_cpu_system_seconds_total                | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_cpu_user_seconds_total                  | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_spec_cpu_quota                          | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| kube_pod_spec_volumes_persistentvolumeclaims_info | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| kubelet_volume_stats_capacity_bytes               | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| kubelet_volume_stats_used_bytes                   | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| kubelet_volume_stats_available_bytes              | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_network_receive_bytes_total             | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_network_transmit_bytes_total            | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_start_time_seconds                      | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_file_descriptors                        | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_threads                                 | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_processes                               | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_fs_reads_bytes_total                    | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_fs_writes_bytes_total                   | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
-| container_fs_writes_bytes_total                   | kubernetes    | available |           |
-+---------------------------------------------------+---------------+-----------+-----------+
 ```
-    
-</details>
-
+NAME                                               MEMORY REQUESTS    MEMORY LIMITS    CPU REQUESTS    CPU LIMITS    NODE                                       ARCH    INSTANCE TYPE    AWS AZ      CAPACITY TYPE
+kafka-test-entity-operator-798859b74d-5jh58        1.0 gb             2.0 gb           0.4             2.0           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-cp-schema-registry-546f5f8b5d-2j48f     6.0 gb             8.0 gb           0.5             1.0           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-cruise-control-5c4cf6749-ss7l2          512.0 mb           2.0 gb           1.0             2.0           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-strimzi-canary-8686978cb7-dbrf4         64.0 mb            64.0 mb          0.1             0.1           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-brokers-az-c-300                        5.0 gb             8.0 gb           1.0             2.0           ip-0-0-184-231.eu-west-1.compute.internal  arm64   m7g.large        eu-west-1c  on-demand
+kafka-test-brokers-az-a-100                        5.0 gb             8.0 gb           1.0             2.0           ip-0-0-60-93.eu-west-1.compute.internal    arm64   m7g.large        eu-west-1a  on-demand
+kafka-test-cp-schema-registry-546f5f8b5d-486b9     6.0 gb             8.0 gb           0.5             1.0           ip-0-0-30-147.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-testing-kafka-k8s-exporter-6fb7c6dqknnl 512.0 mb           1.0 gb           0.1             0.3           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-kafka-exporter-c58966cd6-r2tsj          256.0 mb           512.0 mb         0.1             0.5           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-kafdrop-67ff5d5b4-77khq                 256.0 mb           1.0 gb           0.2             0.5           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-brokers-az-b-200                        5.0 gb             8.0 gb           1.0             2.0           ip-0-0-100-105.eu-west-1.compute.internal  arm64   m7g.large        eu-west-1b  on-demand
+kafka-test-kafka-ui-55fcf964d7-n5j7r               256.0 mb           1.0 gb           0.2             0.5           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-zookeeper-0                             2.0 gb             4.0 gb           1.0             2.0           ip-0-0-30-147.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-zookeeper-2                             2.0 gb             4.0 gb           1.0             2.0           ip-0-0-155-163.eu-west-1.compute.internal  amd64   m5.xlarge        eu-west-1c  on-demand
+kafka-test-cp-schema-registry-546f5f8b5d-pwlzk     6.0 gb             8.0 gb           0.5             1.0           ip-0-0-155-163.eu-west-1.compute.internal  amd64   m5.xlarge        eu-west-1c  on-demand
+burrow-release-kafka-burrow-79c657bfff-q4lx7       128.0 mb           256.0 mb         0.1             0.1           ip-0-0-30-147.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
+kafka-test-zookeeper-1                             2.0 gb             4.0 gb           1.0             2.0           ip-0-0-71-148.eu-west-1.compute.internal   amd64   c5.large         eu-west-1b  on-demand
+kafka-test-cruise-control-ui-569ccc5897-8jqdq      ?                  ?                ?               ?             ip-0-0-33-177.eu-west-1.compute.internal   amd64   c5.large         eu-west-1a  on-demand
+kafka-test-cruise-control-ui-569ccc5897-zl987      ?                  ?                ?               ?             ip-0-0-33-177.eu-west-1.compute.internal   amd64   c5.large         eu-west-1a  on-demand
+```
 
 <br>
 
-
 ---
 
-<br>
-
-## Logging
+# Logging
 
 Default log file location is "`/tmp/kptop.log`"
 
 
 <br>
 
----
-
-<br>
-
-
-## Known Issues
-
-
-### 
-
-<details>
-    <summary>
-        <b style="font-size:22px" > [1] Node Exporter metrics don't return data</b>
-    </summary>
-    <br>
-    
-![image](https://user-images.githubusercontent.com/33789516/208234711-bf46a36b-db60-4fba-943c-792b68f721e6.png)
-    
-</details>
-
-
-
-
-- This is NOT an issue, the node exporter NODE label change from version to another, currently we encountered only "kubernetes_node" or "node"
-- "node" is the default, to fix the it you can change it with the "[KPTOP_NODE_EXPORTER_NODE_LABEL](#env)" Environment variables
-
-```bash
-export KPTOP_NODE_EXPORTER_NODE_LABEL="node" # default
-export KPTOP_NODE_EXPORTER_NODE_LABEL="kubernetes_node"
-```
-
-> auto detection of exporters verstions can be implemented later (if needed).
-
-<br>
-
----
-
-
-
-<br>
 
 Reach me anytime on [Linkedin](https://www.linkedin.com/in/eslam-gomaa/)
 
diff --git a/docs/commands/DataTypes.md b/docs/commands/DataTypes.md
new file mode 100644
index 0000000..ad91cb9
--- /dev/null
+++ b/docs/commands/DataTypes.md
@@ -0,0 +1,110 @@
+---
+layout: default
+nav_order: 2
+# permalink: /
+parent: Custom Commands
+title: Command Data Types
+markdown: Kramdown
+has_children: false
+kramdown:
+  parse_block_html: true
+  auto_ids: true
+  syntax_highlighter: coderay
+---
+
+<button class="btn js-toggle-dark-mode">Switch to Dark Mode
+
+<script>
+const toggleDarkMode = document.querySelector('.js-toggle-dark-mode');
+
+jtd.addEvent(toggleDarkMode, 'click', function(){
+  if (jtd.getTheme() === 'dark') {
+    jtd.setTheme('light');
+    toggleDarkMode.textContent = 'Switch to Dark Mode';
+  } else {
+    jtd.setTheme('dark');
+    toggleDarkMode.textContent = 'Switch to Light Mode';
+  }
+});
+</script>
+
+# Dashboard Data Types
+{: .fs-9 }
+
+<br>
+
+
+## [1] advancedTable
+
+Runs a List of Prometheus metric, where each metric represents a Table column values
+
+Using "`customKey`", allows you to control the values names of the "NAME" column
+
+
+> Example
+```yaml
+- name: Kafka pods details (advancedTable example)
+  enable: true
+  box: left_c
+  type: advancedTable
+  advancedTableColumns:
+    - memory usage:
+      metric: |
+        sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      autoConvertValue: true
+    - memory usage %:
+      metric: |
+        sort_desc(
+          (
+            sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+            /
+            sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+          ) * 100
+        )
+      metricUnit: percentage
+      autoConvertValue: true
+    - memory limit:
+      metric: |
+        sort_desc(sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      autoConvertValue: true
+    - memory cache:
+      metric: |
+        sort_desc(sum(container_memory_cache{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      autoConvertValue: true
+    - memory swap:
+      metric: |
+        sum(container_memory_swap{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+      metricUnit: byte
+      autoConvertValue: true
+    - file descriptors:
+      metric: |
+        sort_desc(sum(container_file_descriptors{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: None
+    - up time:
+      metric: |
+        sum(time() - kube_pod_start_time{namespace=~"$namespace", pod=~"$pod"}) by (pod)
+      metricUnit: seconds
+      autoConvertValue: true
+    - AWS AZ:
+      metric: |
+        sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      valueFromLabel: topology_ebs_csi_aws_com_zone
+  customKey: "{{pod}}"
+  advancedTableOptions:
+    tableType: grid
+    headersUppercase: true
+    showTableIndex: true
+    updateIntervalSeconds: 3
+```
+
+{: .new-title }
+> Note
+>
+> The advancedTableColumns columns order define the Table columns order
+
+- [advancedTableColumns > Yaml Structure](./yaml_structure.md#advancedtablecolumns)
+- [advancedTableOptions > Yaml Structure](./yaml_structure.md#advancedtableoptions)
diff --git a/docs/commands/index.md b/docs/commands/index.md
index 8c1e4d0..e8ecb13 100644
--- a/docs/commands/index.md
+++ b/docs/commands/index.md
@@ -37,8 +37,8 @@ Create monitoring dasboards on the terminal easily with a simple yaml file !
 <br>
 
 ## Examples
-- [pods.yml](../../examples/dashboards/pods.yml)
-- [pvcs.yml](../../examples/dashboards/pvcs.yml)
+- [pods.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/commands/pods.yml)
+- [pvcs.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/commands/pvcs.yml)
 
 <br>
 
@@ -65,3 +65,102 @@ kptop --command <DASHBOARD-NAME>
 ## Command YAMl structure
 
 To be added.
+
+
+---
+
+
+---
+
+
+
+# KPtop Custom Commands
+
+Create monitoring command lines easily with a simple yaml file !
+
+
+
+## Examples
+- [pods.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/commands/pods.yml)
+- [pods-wide.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/commands/pods-wide.yml)
+- [pvcs.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/commands/pvcs.yml)
+
+
+<br>
+
+---
+
+<br>
+
+## Command YAMl structure
+
+
+### variables
+
+Take a list of variables, and optionally you can set a CLi argument for a variable
+
+|               | type | description                                          | default | required |
+| --------------- | ------ | ------------------------------------------------------ | --------- | ---------- |
+| name          | `String`     | variable name ,, also used for the CLI argument name |         | True     |
+| default<br />     | `String`     | devault value for the variable                       |         | <br />       |
+| cliArgument<br /> | `Dict`     | CLI argument options for the variable                | <br />      |          |
+
+
+### cliArgument
+
+|            | type | description                                        | default | required |
+| ------------ | ------ | ---------------------------------------------------- | --------- | ---------- |
+| enable     | `Boolean`     | Enable CLI argument for the variable               |         | True     |
+| short<br />    | `String`     | short for the argument                             |         | True     |
+| required<br /> | `Boolean`     | Wether the argument is required to run the command | False   | False    |
+
+
+### execute (dict)
+
+|                      | type | description                                                                      | default                                                         | required | options |
+| ---------------------- | ------ | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ---------- | --------- |
+| type                 | `String`     | Data type to display on the terminal                                             |                                                                 | True     | `advancedTable`        |
+| advancedTableColumns | `List`     | List of coulmns for the table, each column has its own metric                    |                                                                 | True     |         |
+| custom_key           | `String`     | specify a custom key for metric result, You can compensate labels with "`{{LABEL}}`" syntax | default labels result (string composed of summed labels .. ex. `sum(metric) by (pod, namespace)` |          |         |
+| advancedTableOptions | `Dict`     | options to control how the resulted table looks                                  |                                                                 |          |         |
+
+
+### advancedTableColumns
+
+|                      | type | description                                                                                                                                   | default | required | options        |
+| ---------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- | ---------------- |
+| COULMN NAME <br />EX: `- memory usage:`<br /> | `String`     | <br />                                                                                                                                            |         | <br />       | <br />             |
+| metric               | `String`<br />   | Prometheus metric to qurey                                                                                                                    |         | <br />       |                |
+| metricUnit<br />         | `String`<br />   | metric result value unit                                                                                                                      | byte    |          | `None`, `kb`, `byte`, `mb`, `gb`, `tb`, `seconds`, `percentage` |
+| autoConvertValue<br />   | `Boolean`<br />   | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False   | False    |                |
+
+
+### advancedTableOptions
+
+|                    | type | description                                    | default | required | options |
+| -------------------- | ------ | ------------------------------------------------ | --------- | ---------- | --------- |
+| tableType          | `String`     | the type of table, defines how the table looks | plain   | False    | [All the types supported here](https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format) 🙂<br />   |
+| headersUppercase<br /> | `Boolean`     | <br />                                             | True    | False    |         |
+| showTableIndex<br />   | `Boolean`<br />   | how table idex on the left                     | False   | False    |         |
+
+
+<br>
+
+---
+
+<br>
+
+
+## List commands
+
+```bash
+kptop --list-commands
+```
+
+
+## Run command
+
+
+```bash
+kptop --command <COMMAND-NAME>
+```
diff --git a/docs/commands/yaml_structure.md b/docs/commands/yaml_structure.md
new file mode 100644
index 0000000..ee6e382
--- /dev/null
+++ b/docs/commands/yaml_structure.md
@@ -0,0 +1,160 @@
+---
+layout: default
+nav_order: 1
+# permalink: /
+parent: Custom Commands
+title: Command YAML structure
+markdown: Kramdown
+has_children: false
+kramdown:
+  parse_block_html: true
+  auto_ids: true
+  syntax_highlighter: coderay
+---
+
+<button class="btn js-toggle-dark-mode">Switch to Dark Mode
+
+<script>
+const toggleDarkMode = document.querySelector('.js-toggle-dark-mode');
+
+jtd.addEvent(toggleDarkMode, 'click', function(){
+  if (jtd.getTheme() === 'dark') {
+    jtd.setTheme('light');
+    toggleDarkMode.textContent = 'Switch to Dark Mode';
+  } else {
+    jtd.setTheme('dark');
+    toggleDarkMode.textContent = 'Switch to Light Mode';
+  }
+});
+</script>
+
+# Dashboard YAML structure
+{: .fs-9 }
+
+
+
+[**Full commands Examples Directory**](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/commands)
+
+
+<br>
+
+
+## command
+
+Required
+{: .label .label-yellow }
+
+Dict
+{: .label .label-blue }
+
+|               | type | description                                   | default | required |
+| --------------- | ------ | ----------------------------------------------- | --------- | ---------- |
+| name          | `String`<br />   | Command name                                  |         | True     |
+| description<br /> | `String`     | Command description                           |         | False    |
+| variables     | `List`     | List of variables with optional CLI arguments |         | False    |
+| execute       | `Dict`     | Data type to execute                          |         | True     |
+
+---
+
+## Variables
+
+Optional
+{: .label .label-green }
+
+List
+{: .label .label-blue }
+
+
+> **Example**
+```yaml
+variables:
+  - name: namespace
+    default: .*
+    cliArgument:
+      enable: true
+      short: -n
+      required: false
+  - name: pod
+    default: .*
+    cliArgument:
+      enable: true
+      short: -po
+      required: false
+```
+
+|               | type | description                                          | default | required |
+| --------------- | ------ | ------------------------------------------------------ | --------- | ---------- |
+| name          | `String`     | variable name ,, also used for the CLI argument name |         | True     |
+| default<br />     | `String`     | devault value for the variable                       |         | True     |
+| cliArgument<br /> | `Dict`     | CLI argument options for the variable                | <br />      | False    |
+
+
+### cliArgument
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|            | type | description                                        | default | required |
+| ------------ | ------ | ---------------------------------------------------- | --------- | ---------- |
+| enable     | `Boolean`     | Enable CLI argument for the variable               |         | True     |
+| short<br />    | `String`     | short for the argument                             |         | True     |
+| required<br /> | `Boolean`     | Wether the argument is required to run the command | False   | False    |
+
+---
+
+## execute
+
+Required
+{: .label .label-yellow }
+
+Dict
+{: .label .label-blue }
+
+|                             | type | description                                                          | default                                                         | required |
+| ----------------------------- | ------ | ---------------------------------------------------------------------- | ----------------------------------------------------------------- | ---------- |
+| type<br />                      | `String`<br />   | Data type<br />Options: [`advancedTable`]                                               |                                                                 | True     |
+| advancedTableColumns<br />      | `List`     | **Required with ​**​`advancedTable`​**​ Data type**<br />List of metrics, where each metric represent a column on the table |                                                                 | True     |
+| custom_key                  | `String`     | custom key for the metric result key, <br /><br /> | default labels result string composed of summed labels .. ex. `sum(metric) by (pod, namespace)` | False    |
+| executeadvancedTableOptions | `Dict`     | Graph options with `advancedTable` data type                                        |                                                                 | False    |
+
+
+<br>
+
+
+### advancedTableColumns
+
+Required
+{: .label .label-yellow }
+
+List
+{: .label .label-blue }
+
+|                      | type | description                                                                                                                                   | default | required |
+| ---------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- |
+| COULMN NAME <br />EX: `- memory usage:`<br /> | `String`     | Column name (User Input name)                                                                                                                 | plain   | True     |
+| metric<br />             | `String`     | Prometheus metric to qurey                                                                                                                    | <br />      | True     |
+| metricUnit           | `String`     | metric result value unit<br />Options: [`None`, `kb`, `byte`, `mb`, `gb`, `tb`, `seconds`, `percentage`]                                                                                           | byte    | False    |
+| autoConvertValue<br />   | `Boolean`     | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False   | False    |
+
+<br>
+
+
+### advancedTableOptions
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|                       | type | description                                                                                                                                   | default | required |
+| ----------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- |
+| tableType             | `String`     | Table type  - [Allowed Options](https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format)                                                                                                                                | plain   | False    |
+| showValue<br />           | `Boolean`     | Show value column                                                                                                                             | True    | False    |
+| headersUppercase      | `Boolean`     | Show the table header in Upecase                                                                                                              | True<br />  | False    |
+| autoConvertValue<br />    | `Boolean`     | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False<br /> | False    |
+| showTableIndex        | `Boolean`     | Show table Index on the left                                                                                                                  | True<br />  | False    |
+| updateIntervalSeconds | `Integer`     | Data update interval                                                                                                                          | 5       | False    |
\ No newline at end of file
diff --git a/docs/dashboards/DataTypes.md b/docs/dashboards/DataTypes.md
index 7d7276c..5be39db 100644
--- a/docs/dashboards/DataTypes.md
+++ b/docs/dashboards/DataTypes.md
@@ -31,6 +31,192 @@ jtd.addEvent(toggleDarkMode, 'click', function(){
 # Dashboard Data Types
 {: .fs-9 }
 
-Create monitoring dasboards on the terminal easily with a simple yaml file !
+
+## [1] asciiGraph
+
+Runs a single Prometheus metric, and visualize the result on a live graph, where each metric result item represents a line on the graph
+
+Using "`customKey`", allows you to control items names that show up colored right below the graph
+
+> Example
+```yaml
+- name: Kafka Data In per second.
+  box: right_a
+  enable: true
+  type: asciiGraph
+  metricUnit: kb
+  asciiGraphMetric: >
+    sort_desc(sum(irate(kafka_server_brokertopicmetrics_bytesin_total{topic=~"$topic"}[5m])) by (strimzi_io_cluster, topic)) / 1024
+  customKey: "🍅 {{topic}}"
+  asciiGraphOptions:
+    height: 0
+    width: 80
+    maxHeight: 17
+    maxWidth: 45
+    updateIntervalSeconds: 2
+```
+
+
+{: .warning }
+> `asciiGraph` does NOT support "`autoConvertValue`" option
+
+- "`metricUnit`" will added as it is beside the original metric value, Hence make sure that the metric returns the data in required unit to be visualized. ex: kb, mb, gb .. etc.
+
+
+- [asciigraphoptions > Yaml Structure](./yaml_structure.md#asciigraphoptions)
+
 
 <br>
+
+---
+
+
+## [2] progressBarList
+
+Runs two Prometheus metrics "total value metric" & "usage value metric", Map them to get the usage percentage of each result items, and print a list of ProgressBars that show the usage & usage percentage of each result item
+
+Using "`customKey`", allows you to control items names "Progress Bars Names"
+
+
+> Example
+```yaml
+- name: Kafka pods memory usage (Sorted by higher memory usage)
+  enable: true
+  box: left_a
+  type: progressBarList
+  metricUnit: mb
+  progressBarListMetrics:
+    totalValueMetric: |
+      # Memory limits
+      sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+    usageValueMetric: |
+      # memory usage sorted by higher usage
+      sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+  customKey: "{{pod}}"
+  progressBarListOptions:
+    maxItemsCount: 10
+    lineBreak: true
+    showBarPercentage: true
+    barWidth: 25
+    updateIntervalSeconds: 5
+```
+
+- [progressBarListMetrics > Yaml Structure](./yaml_structure.md#progressbarlistmetrics)
+- [progressBarListOptions > Yaml Structure](./yaml_structure.md#progressbarlistoptions)
+
+
+<br>
+
+---
+
+
+## [3] simpleTable
+
+Runs a single Prometheus metric, and forms a table with all the result items as rows & all the sumed labels as columns
+
+> Example
+```yaml
+- name: Kafka Pods memory usage (simpleTable example)
+  enable: true
+  box: left_b
+  type: simpleTable
+  metricUnit: byte
+  simpleTableMetric: |
+    sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, namespace, karpenter_sh_capacity_type, topology_kubernetes_io_zone,node_kubernetes_io_instance_type)
+  customKey: "{{pod}}"
+  simpleTableOptions:
+    tableType: plain
+    showValue: true
+    headersUppercase: true
+    autoConvertValue: true
+    showTableIndex: true
+    updateIntervalSeconds: 5
+```
+
+
+{: .highlight }
+Table columns order is NOT garanteed with "simpleTable" Type
+
+- [simpleTableOptions > Yaml Structure](./yaml_structure.md#simpletableoptions)
+
+
+
+<br>
+
+---
+
+
+## [4] advancedTable
+
+Runs a List of Prometheus metric, where each metric represents a Table column values
+
+Using "`customKey`", allows you to control the values names of the "NAME" column
+
+
+> Example
+```yaml
+- name: Kafka pods details (advancedTable example)
+  enable: true
+  box: left_c
+  type: advancedTable
+  advancedTableColumns:
+    - memory usage:
+      metric: |
+        sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      autoConvertValue: true
+    - memory usage %:
+      metric: |
+        sort_desc(
+          (
+            sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+            /
+            sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+          ) * 100
+        )
+      metricUnit: percentage
+      autoConvertValue: true
+    - memory limit:
+      metric: |
+        sort_desc(sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      autoConvertValue: true
+    - memory cache:
+      metric: |
+        sort_desc(sum(container_memory_cache{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      autoConvertValue: true
+    - memory swap:
+      metric: |
+        sum(container_memory_swap{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+      metricUnit: byte
+      autoConvertValue: true
+    - file descriptors:
+      metric: |
+        sort_desc(sum(container_file_descriptors{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: None
+    - up time:
+      metric: |
+        sum(time() - kube_pod_start_time{namespace=~"$namespace", pod=~"$pod"}) by (pod)
+      metricUnit: seconds
+      autoConvertValue: true
+    - AWS AZ:
+      metric: |
+        sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      metricUnit: byte
+      valueFromLabel: topology_ebs_csi_aws_com_zone
+  customKey: "{{pod}}"
+  advancedTableOptions:
+    tableType: grid
+    headersUppercase: true
+    showTableIndex: true
+    updateIntervalSeconds: 3
+```
+
+{: .new-title }
+> Note
+>
+> The advancedTableColumns columns order define the Table columns order
+
+- [advancedTableColumns > Yaml Structure](./yaml_structure.md#advancedtablecolumns)
+- [advancedTableOptions > Yaml Structure](./yaml_structure.md#advancedtableoptions)
diff --git a/docs/dashboards/index.md b/docs/dashboards/index.md
index 1509af3..33628c4 100644
--- a/docs/dashboards/index.md
+++ b/docs/dashboards/index.md
@@ -37,8 +37,9 @@ Create monitoring dasboards on the terminal easily with a simple yaml file !
 <br>
 
 ## Examples
-- [pods.yml](../../examples/dashboards/pods.yml)
-- [pvcs.yml](../../examples/dashboards/pvcs.yml)
+- [pods.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/dashboards/pods.yml)
+- [pvcs.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/dashboards/pvcs.yml)
+- [strimzi-kafka-test.yml](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/dashboards/strimzi-kafka-test.yml)
 
 <br>
 
diff --git a/docs/dashboards/yaml_structure.md b/docs/dashboards/yaml_structure.md
index 82f9774..750d062 100644
--- a/docs/dashboards/yaml_structure.md
+++ b/docs/dashboards/yaml_structure.md
@@ -31,6 +31,290 @@ jtd.addEvent(toggleDarkMode, 'click', function(){
 # Dashboard YAML structure
 {: .fs-9 }
 
-Create monitoring dasboards on the terminal easily with a simple yaml file !
+
+
+[**Full dashboards Examples Directory**](https://github.com/eslam-gomaa/kptop/blob/v0.0.10/examples/dashboards)
+
 
 <br>
+
+
+## dashboard
+
+Required
+{: .label .label-yellow }
+
+Dict
+{: .label .label-blue }
+
+|               | type | description                                           | default | required |
+| --------------- | ------ | ------------------------------------------------------- | --------- | ---------- |
+| name          | `String`<br />   | Dashboard name                                        |         | True     |
+| description<br /> | `String`     | Dashboard description                                 |         | False    |
+| layout<br />      | `Dict`     | The dashbaord layout structure                        | <br />      | True     |
+| variables     | `List`     | CList of variables with optional CLI arguments                 |         | False    |
+| visualization | `List`     | List of graphs to display on the defined layout boxes |         | True     |
+
+---
+
+## layout
+
+Required
+{: .label .label-yellow }
+
+Dict
+{: .label .label-blue }
+
+
+|              | type | description                         | default | required |
+| -------------- | ------ | ------------------------------------- | --------- | ---------- |
+| splitMode    | `String`<br />   | Split                               | "row"   | False    |
+| fullScreen<br /> | `Boolean`     | Dashboard description               | True    | False    |
+| header<br />     | `Dict`     | Dashboard header options            | <br />      | False    |
+| body.boxes   | `Dict`     | Options of the 3 main screen splits |         | True     |
+
+
+### left || middle || right
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+
+> **Example**
+```yaml
+left:
+  enable: true
+  size: 190
+  ratio: 1
+  split_mode: column
+  split:
+    left_a:
+      size: 0
+      ratio: 1
+```
+
+
+|            | type | description                             | default | required |
+| ------------ | ------ | ----------------------------------------- | --------- | ---------- |
+| enable     | `Boolean`<br />   | Whether to enable the screen split mode | False   | False    |
+| size<br />     | `Integer`     | Layout Size                             | 0       | False    |
+| ratio<br />    | `Integer`     | Layout Ratio                            | 1       | False    |
+| split_mode | `Dict`     | Split option, Options: `column` , `row`              | "row"   | False    |
+| split      | `Dict`     | Furthur split                           |         | True     |
+
+
+#### [left || middle || right].split
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|            | type | description  | default | required |
+| ------------ | ------ | -------------- | --------- | ---------- |
+| SPLIT-NAME | `Dict`<br />   | **User Input - ​**             | False   | False    |
+| size<br />     | `Integer`     | Layout Size  | 0       | False    |
+| ratio<br />    | `Integer`     | Layout Ratio | 1       | False    |
+
+---
+
+## Variables
+
+Optional
+{: .label .label-green }
+
+List
+{: .label .label-blue }
+
+
+> **Example**
+```yaml
+variables:
+  - name: namespace
+    default: .*
+    cliArgument:
+      enable: true
+      short: -n
+      required: false
+  - name: pod
+    default: .*
+    cliArgument:
+      enable: true
+      short: -po
+      required: false
+```
+
+|               | type | description                                          | default | required |
+| --------------- | ------ | ------------------------------------------------------ | --------- | ---------- |
+| name          | `String`     | variable name ,, also used for the CLI argument name |         | True     |
+| default<br />     | `String`     | devault value for the variable                       |         | True     |
+| cliArgument<br /> | `Dict`     | CLI argument options for the variable                | <br />      | False    |
+
+
+### cliArgument
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|            | type | description                                        | default | required |
+| ------------ | ------ | ---------------------------------------------------- | --------- | ---------- |
+| enable     | `Boolean`     | Enable CLI argument for the variable               |         | True     |
+| short<br />    | `String`     | short for the argument                             |         | True     |
+| required<br /> | `Boolean`     | Wether the argument is required to run the command | False   | False    |
+
+---
+
+## Visualization
+
+Required
+{: .label .label-yellow }
+
+List
+{: .label .label-blue }
+
+
+> **Example**
+```yaml
+visualization:
+  - name: Pods Memory Usage
+    enable: true
+    box: right_a
+    type: asciiGraph
+    metricUnit: mb
+    # Sorting is important if you expect lots of results
+    asciiGraphMetric: >
+      sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod", pod!=""}) by (pod) / 1024 / 1024)
+    custom_key: "🥕 {{pod}}"
+    asciiGraphOptions:
+      height: 0
+      width: 80
+      maxHeight: 17
+      maxWidth: 45
+      updateIntervalSeconds: 2
+```
+
+|                        | type | description                                                                                                                            | default                   | required |
+| ------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ---------- |
+| name                   | `String`     | Name of graph                                                                                                                          |                           | True     |
+| enable<br />               | `Boolean`     | Enable the display of the graph                                                                                                        | True                      | False    |
+| box<br />                  | `Boolean`     | The layout box to display the graph in,<br />*Example*: `right` , `right_a` , `left_b`                                                                                      | <br />                        | True     |
+| type                   |      | Graph data type - Options: [`asciiGraph`, `progressBarList`, `simpleTable`, `advancedTable`]                                                                                                    |                           | True     |
+| metricUnit             | `String`     | the metirc value unit - Options: [`None`, `byte`, `mb`, `gb`, `tb`, `seconds`, `percentage`]                                                                                        |                           |          |
+| custom_key             | `String`     | custom key for the metric result key, <br /> <br />                                                                   | Metric default result key |          |
+| asciiGraphOptions      | `Dict`     | Graph options with `asciiGraph` data type                                                                                                          |                           | False    |
+| progressBarListOptions | `Dict`     | Graph options with `progressBarList` data type                                                                                                          |                           | False    |
+| simpleTableOptions     | `Dict`     | Graph options with `simpleTable` data type                                                                                                          |                           | False    |
+| advancedTableOptions   | `Dict`     | Graph options with `advancedTable` data type                                                                                                          |                           | False    |
+| simpleTableMetric      | `String`     | **Required with ​`simpleTable`​ Data type**<br />A single Prometheus Metric, where each result item is a row in the table and each label is a column.                                 |                           | True     |
+| advancedTableColumns   | `List`     | **Required with ​​`advancedTable`​ Data type**<br />List of metrics, where each metric represent a column on the table                                                                   |                           | True     |
+| progressBarListMetrics | `Dict`     | **Required with ​`progressBarList`​ Data type**<br />Two Prometheus metrics, "usage" & "total" , to calculate and display the percentage of each result item and display as a progressBar |                           | True     |
+| asciiGraphMetric       | `String`     | **Required with ​`asciiGraph`​ Data type**<br />A single Prometheus Metric, where each result item is a line on the graph                                                            |                           | True     |
+
+<br>
+
+### asciiGraphOptions
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|                       | type | description          | default | required |
+| ----------------------- | ------ | ---------------------- | --------- | ---------- |
+| height                | `Integer`     | Graph height         | 17<br />    | False    |
+| width<br />               | `Integer`     | Graph width          | 45      | False    |
+| maxHeight             | `Integer`     |                      | 20      | False    |
+| maxWidth<br />            | `Integer`     | <br />                   | 50      | False    |
+| updateIntervalSeconds | `Integer`     | Data update interval | 5       | False    |
+
+### progressBarListOptions
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|                       | type | description                               | default | required |
+| ----------------------- | ------ | ------------------------------------------- | --------- | ---------- |
+| maxItemsCount         | `Integer`     | Maxumim number of items to visualize      | 20      | False    |
+| lineBreak<br />           | `Boolean`     | Print lines between progressBars          | True    | False    |
+| showBarPercentage     | `Boolean`     | show progress percentage for ProgressBars | True<br />  | False    |
+| barWidth<br />            | `Integer`     | ProgressBar width                         | 20<br />    | False    |
+| updateIntervalSeconds | `Integer`     | Data update interval                      | 5       | False    |
+
+
+### simpleTableOptions
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|                       | type | description                                                                                                                                   | default | required |
+| ----------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- |
+| tableType             | `String`     | Table type  - [Allowed Options](https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format)                                                                                                                                | plain   | False    |
+| showValue<br />           | `Boolean`     | Show value column                                                                                                                             | True    | False    |
+| headersUppercase      | `Boolean`     | Show the table header in Upecase                                                                                                              | True<br />  | False    |
+| autoConvertValue<br />    | `Boolean`     | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False   | False    |
+| showTableIndex        | `Boolean`     | Show table Index on the left                                                                                                                  | True<br />  | False    |
+| updateIntervalSeconds | `Integer`     | Data update interval                                                                                                                          | 5       | False    |
+
+
+### advancedTableOptions
+
+Optional
+{: .label .label-green }
+
+Dict
+{: .label .label-blue }
+
+|                       | type | description                                                                                                                                   | default | required |
+| ----------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- |
+| tableType             | `String`     | Table type  - [Allowed Options](https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format)                                                                                                                                | plain   | False    |
+| showValue<br />           | `Boolean`     | Show value column                                                                                                                             | True    | False    |
+| headersUppercase      | `Boolean`     | Show the table header in Upecase                                                                                                              | True<br />  | False    |
+| autoConvertValue<br />    | `Boolean`     | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False<br /> | False    |
+| showTableIndex        | `Boolean`     | Show table Index on the left                                                                                                                  | True<br />  | False    |
+| updateIntervalSeconds | `Integer`     | Data update interval                                                                                                                          | 5       | False    |
+
+<br>
+
+
+### advancedTableColumns
+
+Required
+{: .label .label-yellow }
+
+List
+{: .label .label-blue }
+
+|                      | type | description                                                                                                                                   | default | required |
+| ---------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- |
+| COULMN NAME <br />EX: `- memory usage:`<br /> | `String`     | Column name (User Input name)                                                                                                                 | plain   | True     |
+| metric<br />             | `String`     | Prometheus metric to qurey                                                                                                                    | <br />      | True     |
+| metricUnit           | `String`     | metric result value unit<br />Options: [`None`, `kb`, `byte`, `mb`, `gb`, `tb`, `seconds`, `percentage`]                                                                                           | byte    | False    |
+| autoConvertValue<br />   | `Boolean`     | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False   | False    |
+
+
+### progressBarListMetrics
+
+Required
+{: .label .label-yellow }
+
+Dict
+{: .label .label-blue }
+
+|                      | type | description                                      | default | required |
+| ---------------------- | ------ | -------------------------------------------------- | --------- | ---------- |
+| total_value_metric   | `String`     | Prometheus metric to qurey - to get total values |         | True     |
+| total_value_metric<br /> | `String`     | Prometheus metric to qurey - to get usage values | <br />      | True     |
diff --git a/docs/index.md b/docs/index.md
index 8b5eb2e..26c78c7 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -22,10 +22,13 @@ A Python tool that offers beautiful CLI monitoring based on Prometheus metrics,
 
 Allowing you to create your own custom CLI dashboards & CLI commands with custom layouts, variables, CLI arguments !
 
+**KPtop has been refactored to work as a general CLI monitoring tool, deprecating all hardcoded metrics & dashboards. 🚀**
+
+
 <br>
 
 # Motivation
-Prometheus is widely used with different kinds of metrics - Let's make CLI monitoring more powerful with Prometheus data.
+Prometheus is widely used with different kinds of metrics - Let's make CLI monitoring more powerful with Prometheus data. ✊
 
 
 
@@ -39,9 +42,9 @@ Prometheus is widely used with different kinds of metrics - Let's make CLI monit
 
 | ENV | Description                                                                          | Default | Required |
 | ----- | -------------------------------------------------------------------------------------- | --------- | ---------- |
-| `KPTOP_CONNECTION_METHOD`    | The way to connect to Prometheus server<br />**options:** [`prometheus_endpoint`, `pod_portForward`] | <br />      | Yes      |
+| `KPTOP_CONNECTION_METHOD`    | The way to connect to Prometheus server<br>|**options:** [`prometheus_endpoint`, `pod_portForward`] | True  |
 
-There are 2 options to connect KPtop to Prometheus:
+> There are 2 options to connect KPtop to Prometheus:
 1. With a Prometheus server endpoint
     - Suitable if Prometheus is exposed (with an ingress for example)
 2. With 'K8s pod port-forward' (Through K8s API-Server)
@@ -119,7 +122,6 @@ There are 2 options to connect KPtop to Prometheus:
 
 <br>
 
-Add the ENVs and you're good to go.
 
 _**Example**_
 
@@ -130,7 +132,7 @@ export KPTOP_PROMETHEUS_POD_PORT="9090"
 export KPTOP_PROMETHEUS_POD_NAMESPACE="monitoring"
 ```
 
-> Or
+| Or
 
 ```bash
 export KPTOP_CONNECTION_METHOD="prometheus_endpoint"
@@ -154,8 +156,8 @@ export KPTOP_DEFAULT_COMMANDS_DIRECTORY="/Users/YOU/kptop/examples/dashboards"
 
 ## Run dashboards / commands !
 
-### [Dashboards Doc](./dashboards/)
-### [Commands Doc](./commands/)
+### [Dashboards Doc](./dashboards/index.md)
+### [Commands Doc](./commands/index.md)
 
 
 ```bash
@@ -170,7 +172,7 @@ pvcs           29-06-2024 12:33:02  29-06-2024 12:33:02
 strimzi-kafka  29-06-2024 12:33:02  29-06-2024 12:33:02
 ```
 
-> [Example dashboard | pods.yml](../examples/commands/pods-wide.yml)
+[**Example dashboard > pods.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/dashboards/pods.yml)
 
 
 ```bash
@@ -181,7 +183,7 @@ kptop --dashboard pods
 
 <br>
 
-> [Example dashboard | pods.yml](../examples/commands/pods-wide.yml)
+[**Example dashboard > pvcs.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/dashboards/pvcs.yml)
 
 ```bash
 kptop --dashboard pvcs
@@ -192,6 +194,18 @@ kptop --dashboard pvcs
 
 <br>
 
+[**Example dashboard > strimzi-kafka-test.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/dashboards/strimzi-kafka-test.yml)
+
+```bash
+kptop --dashboard strimzi-kafka-test -n kafka
+```
+
+
+![alt text](./images/dashboard-strimzi-kafka-test.png)
+
+
+---
+
 
 ```bash
 kptop --list-commands
@@ -205,7 +219,7 @@ pods-wide  29-06-2024 12:33:02  29-06-2024 12:33:02
 ```
 
 
-> [Example command | pods-wide.yml](../examples/commands/pods-wide.yml)
+[**Example command > pods-wide.yml**](https://github.com/eslam-gomaa/kptop/blob/v0.0.11/examples/commands/pods-wide.yml)
 
 ```bash
 kptop --command pods-wide -n kafka
@@ -238,7 +252,7 @@ kafka-test-cruise-control-ui-569ccc5897-zl987      ?                  ?
 
 ---
 
-Logging
+# Logging
 
 Default log file location is "`/tmp/kptop.log`"
 
diff --git a/docs3/README.md b/docs3/README.md
deleted file mode 100644
index 667a007..0000000
--- a/docs3/README.md
+++ /dev/null
@@ -1,243 +0,0 @@
-
-# Kube-Prometheus-Top [ kptop ]
-
-A Python tool that offers beautiful CLI monitoring based on Prometheus metrics, with Kubernetes integration through PodPortForward
-
-Allowing you to create your own custom CLI dashboards & CLI commands with custom layouts, variables, CLI arguments !
-
-<br>
-
-# Motivation
-Prometheus is widely used with different kinds of metrics - Let's make CLI monitoring more powerful with Prometheus data.
-
-
-<br>
-
----
-
-
-# Installation
-
-> Compatible with Python 3.6+
-
-[on PyPi](https://pypi.org/project/kptop)
-
-```bash
-pip3 install kptop --upgrade
-```
-
-<br>
-
----
-
-
-## Environment Variables
-<a id=env></a>
-
-| ENV | Description                                                                          | Default | Required |
-| ----- | -------------------------------------------------------------------------------------- | --------- | ---------- |
-| `KPTOP_CONNECTION_METHOD`    | The way to connect to Prometheus server<br />**options:** ['prometheus_endpoint', 'pod_portForward'] | <br />      | Yes      |
-
-There are 2 options to connect KPtop to Prometheus:
-1. With a Prometheus server endpoint
-    - Suitable if Prometheus is exposed (with an ingress for example)
-2. With 'K8s pod port-forward' (Through K8s API-Server)
-    - Suitable if Prometheus is Not exposed (Only rechable with K8s cluster access)
-
-
-#### `prometheus_endpoint` ENVs
-
-| ENV | Description                                                     | Default | Required |
-| ----- | ----------------------------------------------------------------- | --------- | ---------- |
-| `KPTOP_PROMETHEUS_SERVER`    | Prometheus server URL                                           |         | Yes      |
-| `KPTOP_BASIC_AUTH_ENABLED`    | Whether basic authentication is needed to connect to Prometheus | False   | No       |
-| `KPTOP_PROMETHEUS_USERNAME`    | Prometheus username                                             |         | No       |
-| `KPTOP_PROMETHEUS_PASSWORD`    | Prometheus password                                             |         | No       |
-| `KPTOP_INSECURE`    | Verify SSL certificate                                          | False   | No       |
-
-
-<br>
-
-#### `pod_portForward` ENVs
-
-| ENV | Description                                            | Default | Required |
-| ----- | -------------------------------------------------------- | --------- | ---------- |
-| `KPTOP_PROMETHEUS_POD_NAME`    | Prometheus pod name                                    |         | Yes      |
-| `KPTOP_PROMETHEUS_POD_PORT`    | Prometheus port number                                 | 9090    | No       |
-| `KPTOP_PROMETHEUS_POD_NAMESPACE`    | The name space in which the Prometheus pod is deployed | default | No       |
-| `KUBECONFIG`    | custom K8s kube config file                            | *default path*        | No       |
-
-
-<br>
-
-#### General ENVs
-
-| ENV                                  | Description                                                  | Default               | Required |
-| ------------------------------------ | ------------------------------------------------------------ | --------------------- | -------- |
-| `KPTOP_START_GRAPHS_WITH_ZERO`       | By default graphs begin with '0'  to let the graph take its full hight | True                  | NO       |
-| `KPTOP_LOGGING_DIR`                  | Choose a different logging directory                         | /tmp/                 | NO       |
-| `KPTOP_GRAPH_WIDTH`                  | Choose a custom graphs width                                 | 45                    | NO       |
-| `KPTOP_DEFAULT_DASHBOARDS_DIRECTORY` | Default directory contains the dashboards yaml files         | /var/kptop/dashboards | NO       |
-| `KPTOP_DEFAULT_COMMANDS_DIRECTORY`   | Default directory contains the commands yaml files           | /var/kptop/commands   | NO       |
-
-
-
-<br>
-
----
-
-# CLI Arguments
-<a id=cli></a>
-
-
-| ENV                         | Description                                                  |
-| --------------------------- | ------------------------------------------------------------ |
-| `--dashboard` , `-D`        | Specify a dashboard YAML file                                |
-| `--command` , `-C`          | Specify a command YAML file                                  |
-| `--list-dashboards` , `-ld` | List all the available dashboards                            |
-| `--list-commands` , `-lc`   | List all the available commands                              |
-| `--debug`,  `-d`            | Enable debugging logging mode                                |
-| `--version`,  `-V`          | Show kptop version                                           |
-| `--print-layout`,  `-pl`    | Print the dashboard empty layout                             |
-| `--vhelp` ,  `-vh`          | Print the arguments including "the variables arguments defined in your command yaml file" |
-
-
-<br>
-
----
-
-
-# Usage
-
-
-## [1] Add the Prometheus connection Environment Variables
-
-## Example
-
-<br>
-
-Add the ENVs and you're good to go.
-
-_*Examples*_
-
-```bash
-export KPTOP_CONNECTION_METHOD="pod_portForward"
-export KPTOP_PROMETHEUS_POD_NAME="my-prometheus-server-0"
-export KPTOP_PROMETHEUS_POD_PORT="9090"
-export KPTOP_PROMETHEUS_POD_NAMESPACE="monitoring"
-```
-
-> Or
-
-```bash
-export KPTOP_CONNECTION_METHOD="prometheus_endpoint"
-export KPTOP_PROMETHEUS_SERVER="http://prometheus.home-lab.com"
-```
-
-
-<br>
-
-## [2] Configure the location of your dashboards & commands
-
-
-Example:
-
-```bash
-export KPTOP_DEFAULT_DASHBOARDS_DIRECTORY="/Users/YOU/kptop/examples/dashboards"
-export KPTOP_DEFAULT_COMMANDS_DIRECTORY="/Users/YOU/kptop/examples/dashboards"
-```
-
-
-
-## Run dashboards / commands !
-
-### [Dashboards Doc](./dashboards/)
-### [Commands Doc](./commands/)
-
-
-```bash
-kptop --list-dashboards
-```
-
-```
-DASHBOARD      CREATION TIME        UPDATE TIME
-pods           29-06-2024 19:43:19  29-06-2024 19:43:19
-test           29-06-2024 19:27:04  29-06-2024 19:27:04
-pvcs           29-06-2024 12:33:02  29-06-2024 12:33:02
-strimzi-kafka  29-06-2024 12:33:02  29-06-2024 12:33:02
-```
-
-> [Example dashboard | pods.yml](../examples/commands/pods-wide.yml)
-
-
-```bash
-kptop --dashboard pods
-```
-
-![alt text](./images/dashboard-pods.png)
-
-<br>
-
-> [Example dashboard | pods.yml](../examples/commands/pods-wide.yml)
-
-```bash
-kptop --dashboard pvcs
-```
-
-![alt text](./images/dashboard-pvcs.png)
-
-
-<br>
-
-
-```bash
-kptop --list-commands
-```
-
-```
-COMMAND    CREATION TIME        UPDATE TIME
-pods       29-06-2024 12:33:02  29-06-2024 12:33:02
-pvcs       29-06-2024 12:33:02  29-06-2024 12:33:02
-pods-wide  29-06-2024 12:33:02  29-06-2024 12:33:02
-```
-
-
-> [Example command | pods-wide.yml](../examples/commands/pods-wide.yml)
-
-```bash
-kptop --command pods-wide -n kafka
-```
-
-```
-NAME                                               MEMORY REQUESTS    MEMORY LIMITS    CPU REQUESTS    CPU LIMITS    NODE                                       ARCH    INSTANCE TYPE    AWS AZ      CAPACITY TYPE
-kafka-test-entity-operator-798859b74d-5jh58        1.0 gb             2.0 gb           0.4             2.0           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-cp-schema-registry-546f5f8b5d-2j48f     6.0 gb             8.0 gb           0.5             1.0           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-cruise-control-5c4cf6749-ss7l2          512.0 mb           2.0 gb           1.0             2.0           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-strimzi-canary-8686978cb7-dbrf4         64.0 mb            64.0 mb          0.1             0.1           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-brokers-az-c-300                        5.0 gb             8.0 gb           1.0             2.0           ip-0-0-184-231.eu-west-1.compute.internal  arm64   m7g.large        eu-west-1c  on-demand
-kafka-test-brokers-az-a-100                        5.0 gb             8.0 gb           1.0             2.0           ip-0-0-60-93.eu-west-1.compute.internal    arm64   m7g.large        eu-west-1a  on-demand
-kafka-test-cp-schema-registry-546f5f8b5d-486b9     6.0 gb             8.0 gb           0.5             1.0           ip-0-0-30-147.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-testing-kafka-k8s-exporter-6fb7c6dqknnl 512.0 mb           1.0 gb           0.1             0.3           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-kafka-exporter-c58966cd6-r2tsj          256.0 mb           512.0 mb         0.1             0.5           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-kafdrop-67ff5d5b4-77khq                 256.0 mb           1.0 gb           0.2             0.5           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-brokers-az-b-200                        5.0 gb             8.0 gb           1.0             2.0           ip-0-0-100-105.eu-west-1.compute.internal  arm64   m7g.large        eu-west-1b  on-demand
-kafka-test-kafka-ui-55fcf964d7-n5j7r               256.0 mb           1.0 gb           0.2             0.5           ip-0-0-16-205.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-zookeeper-0                             2.0 gb             4.0 gb           1.0             2.0           ip-0-0-30-147.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-zookeeper-2                             2.0 gb             4.0 gb           1.0             2.0           ip-0-0-155-163.eu-west-1.compute.internal  amd64   m5.xlarge        eu-west-1c  on-demand
-kafka-test-cp-schema-registry-546f5f8b5d-pwlzk     6.0 gb             8.0 gb           0.5             1.0           ip-0-0-155-163.eu-west-1.compute.internal  amd64   m5.xlarge        eu-west-1c  on-demand
-burrow-release-kafka-burrow-79c657bfff-q4lx7       128.0 mb           256.0 mb         0.1             0.1           ip-0-0-30-147.eu-west-1.compute.internal   amd64   m5.xlarge        eu-west-1a  on-demand
-kafka-test-zookeeper-1                             2.0 gb             4.0 gb           1.0             2.0           ip-0-0-71-148.eu-west-1.compute.internal   amd64   c5.large         eu-west-1b  on-demand
-kafka-test-cruise-control-ui-569ccc5897-8jqdq      ?                  ?                ?               ?             ip-0-0-33-177.eu-west-1.compute.internal   amd64   c5.large         eu-west-1a  on-demand
-kafka-test-cruise-control-ui-569ccc5897-zl987      ?                  ?                ?               ?             ip-0-0-33-177.eu-west-1.compute.internal   amd64   c5.large         eu-west-1a  on-demand
-```
-
-<br>
-
----
-
-Logging
-
-Default log file location is "`/tmp/kptop.log`"
-
-
-<br>
diff --git a/docs3/commands/README.md b/docs3/commands/README.md
deleted file mode 100644
index e86397d..0000000
--- a/docs3/commands/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-
-# KPtop Custom Commands
-
-Create monitoring command lines easily with a simple yaml file !
-
-
-
-## Examples
-- [pods.yml](../../examples/commands/pods.yml)
-- [pods-wide.yml](../../examples/commands/pods-wide.yml)
-- [pvcs.yml](../../examples/commands/pvcs.yml)
-
-
-<br>
-
----
-
-<br>
-
-## Command YAMl structure
-
-
-### variables
-
-Take a list of variables, and optionally you can set a CLi argument for a variable
-
-|               | type | description                                          | default | required |
-| --------------- | ------ | ------------------------------------------------------ | --------- | ---------- |
-| name          | `String`     | variable name ,, also used for the CLI argument name |         | True     |
-| default<br />     | `String`     | devault value for the variable                       |         | <br />       |
-| cliArgument<br /> | `Dict`     | CLI argument options for the variable                | <br />      |          |
-
-
-### cliArgument
-
-|            | type | description                                        | default | required |
-| ------------ | ------ | ---------------------------------------------------- | --------- | ---------- |
-| enable     | `Boolean`     | Enable CLI argument for the variable               |         | True     |
-| short<br />    | `String`     | short for the argument                             |         | True     |
-| required<br /> | `Boolean`     | Wether the argument is required to run the command | False   | False    |
-
-
-### execute (dict)
-
-|                      | type | description                                                                      | default                                                         | required | options |
-| ---------------------- | ------ | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ---------- | --------- |
-| type                 | `String`     | Data type to display on the terminal                                             |                                                                 | True     | `advancedTable`        |
-| advancedTableColumns | `List`     | List of coulmns for the table, each column has its own metric                    |                                                                 | True     |         |
-| custom_key           | `String`     | specify a custom key for metric result, You can compensate labels with "`{{LABEL}}`" syntax | default labels result (string composed of summed labels .. ex. `sum(metric) by (pod, namespace)` |          |         |
-| advancedTableOptions | `Dict`     | options to control how the resulted table looks                                  |                                                                 |          |         |
-
-
-### advancedTableColumns
-
-|                      | type | description                                                                                                                                   | default | required | options        |
-| ---------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------- | ---------------- |
-| COULMN NAME <br />EX: `- memory usage:`<br /> | `String`     | <br />                                                                                                                                            |         | <br />       | <br />             |
-| metric               | `String`<br />   | Prometheus metric to qurey                                                                                                                    |         | <br />       |                |
-| metricUnit<br />         | `String`<br />   | metric result value unit                                                                                                                      | byte    |          | `None`, `kb`, `byte`, `mb`, `gb`, `tb`, `seconds`, `percentage` |
-| autoConvertValue<br />   | `Boolean`<br />   | Auto convert the metric value based on the metricUnit .. for example, if metric value is in byte, it would be converted to kb, mb, gb .. etc. | False   | False    |                |
-
-
-### advancedTableOptions
-
-|                    | type | description                                    | default | required | options |
-| -------------------- | ------ | ------------------------------------------------ | --------- | ---------- | --------- |
-| tableType          | `String`     | the type of table, defines how the table looks | plain   | False    | [All the types supported here](https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format) 🙂<br />   |
-| headersUppercase<br /> | `Boolean`     | <br />                                             | True    | False    |         |
-| showTableIndex<br />   | `Boolean`<br />   | how table idex on the left                     | False   | False    |         |
-
-
-<br>
-
----
-
-<br>
-
-
-## List commands
-
-```bash
-kptop --list-commands
-```
-
-
-## Run command
-
-
-```bash
-kptop --command <COMMAND-NAME>
-```
diff --git a/docs3/dashboards/README.md b/docs3/dashboards/README.md
deleted file mode 100644
index 1435582..0000000
--- a/docs3/dashboards/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-
-# KPtop Custom Commands
-
-Create monitoring dasboards on the terminal easily with a simple yaml file !
-
-
-
-## Examples
-- [pods.yml](../../examples/dashboards/pods.yml)
-- [pvcs.yml](../../examples/dashboards/pvcs.yml)
-
-
-<br>
-
----
-
-<br>
-
-## Command YAMl structure
-
-To be added.
-
-
-<br>
-
----
-
-<br>
-
-## List dashboards
-
-```bash
-kptop --list-dashboards
-```
-
-
-## Run dashboard
-
-
-```bash
-kptop --dashboard <DASHBOARD-NAME>
-```
diff --git a/docs3/images/dashboard-pods.png b/docs3/images/dashboard-pods.png
deleted file mode 100644
index 697f941..0000000
Binary files a/docs3/images/dashboard-pods.png and /dev/null differ
diff --git a/docs3/images/dashboard-pvcs.png b/docs3/images/dashboard-pvcs.png
deleted file mode 100644
index 674899c..0000000
Binary files a/docs3/images/dashboard-pvcs.png and /dev/null differ
diff --git a/docs3/to.delete/port-forward.md b/docs3/to.delete/port-forward.md
deleted file mode 100644
index f1d5e3a..0000000
--- a/docs3/to.delete/port-forward.md
+++ /dev/null
@@ -1,21 +0,0 @@
-
-## `kubectl port-forward`
-
-> Syntax
-
-```bash
-kubectl -n <NAMESPACE> port-forward svc/<SERVICE> <LOCAL-PORT>:<SERVICE-PORT>
-```
-
-<br>
-
-> Example
-
-```bash
-kubectl -n monitoring port-forward svc/prometheus-server 8080:80
-```
-
-
-<br>
-
-To know more => https://stackoverflow.com/questions/51468491/how-kubectl-port-forward-works
diff --git a/examples/commands/pvcs.yml b/examples/commands/pvcs.yml
index a0859e9..9447262 100644
--- a/examples/commands/pvcs.yml
+++ b/examples/commands/pvcs.yml
@@ -3,64 +3,82 @@ command:
   description: Kubernetes Pods info of a specific namespace
 
   variables:
-    - name: pod
+    - name: namespace
       default: .*
       cliArgument:
         enable: true
-        short: -po
+        short: -n
         required: false
-    - name: namespace
-      default: default
+    - name: pvc
+      default: .*
       cliArgument:
         enable: true
-        short: -n
+        short: -pv
+        required: false
+    - name: pod
+      default: .*
+      cliArgument:
+        enable: true
+        short: -po
         required: false
 
   execute:
     type: advancedTable
     advancedTableColumns:
-      - memory usage:
-        metric: |
-          sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-        metricUnit: byte
-      - memory usage %:
-        metric: |
-          sort_desc(
-            (
-              sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-              /
-              sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-            ) * 100
-          )
-        metricUnit: percentage
-      - memory limit:
-        metric: |
-          sort_desc(sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-        metricUnit: byte
-      - memory cache:
-        metric: |
-          sort_desc(sum(container_memory_cache{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-        metricUnit: byte
-      - memory swap:
-        metric: |
-          sum(container_memory_swap{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-        metricUnit: byte
-      - memory max usage:
-        metric: |
-          sum(container_memory_max_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-        metricUnit: byte
-      - file descriptors:
-        metric: |
-          sort_desc(sum(container_file_descriptors{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-        metricUnit: None
-      - up time:
-        metric: |
-          sum(time() - kube_pod_start_time{namespace=~"$namespace", pod=~"$pod"}) by (pod)
-        metricUnit: seconds
-    custom_key: "{{pod}}" # "{{pod}} - {{topology_ebs_csi_aws_com_zone}}"
+    - disk capacity:
+      metric: |
+        sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+      metricUnit: byte
+      autoConvertValue: true
+    - disk used:
+      metric: |
+        sum(kubelet_volume_stats_used_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+      metricUnit: byte
+      autoConvertValue: true
+    - disk used %:
+      metric: |
+        (sum(kubelet_volume_stats_used_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname, node_kubernetes_io_instance_type) /
+          sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname, node_kubernetes_io_instance_type)) * 100
+      metricUnit: percentage
+      autoConvertValue: true
+    - disk available:
+      metric: |
+        sum(kubelet_volume_stats_available_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+      metricUnit: byte
+      autoConvertValue: true
+    - namespace:
+      metric: |
+        sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+      metricUnit: byte
+      valueFromLabel: namespace
+    - pod:
+      metric: |
+        sum(kube_pod_spec_volumes_persistentvolumeclaims_info{persistentvolumeclaim=~"$pvc", namespace=~"$namespace", pod=~"$pod"}) by (pod, persistentvolumeclaim, volume)
+      metricUnit: byte
+      valueFromLabel: pod
+    # - node:
+    #   metric: |
+    #     sum(kubelet_volume_stats_capacity_bytes) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+    #   metricUnit: byte
+    #   valueFromLabel: kubernetes_io_hostname
+    - instance type:
+      metric: |
+        sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+      metricUnit: byte
+      valueFromLabel: node_kubernetes_io_instance_type
+    - AWS Zone:
+      metric: |
+        sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
+      metricUnit: byte
+      valueFromLabel: topology_kubernetes_io_zone
+    - Inodes Usage %:
+      metric: |
+        sum((kubelet_volume_stats_inodes_used{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"} / (kubelet_volume_stats_inodes_used{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"} + kubelet_volume_stats_inodes_free{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"})) * 100) by (namespace, persistentvolumeclaim)
+      metricUnit: percentage
+      autoConvertValue: true
+    customKey: "💾 {{persistentvolumeclaim}}" # "{{pod}} - {{topology_ebs_csi_aws_com_zone}}"
     advancedTableOptions:
-      tableType: plain # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
+      tableType: simple # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
       headersUppercase: true
-      autoConvertValue: true
-      showTableIndex: false
+      showTableIndex: true
       updateIntervalSeconds: 3
diff --git a/examples/dashboards/pods.yml b/examples/dashboards/pods.yml
index 5c6bad5..f59348d 100644
--- a/examples/dashboards/pods.yml
+++ b/examples/dashboards/pods.yml
@@ -65,12 +65,12 @@ dashboard:
     - name: Pods Memory Usage
       enable: true
       box: right_a
-      type: asciiGraph # || progressBarList || asciiText
+      type: asciiGraph
       metricUnit: mb
       # Sorting is important if you expect lots of results
-      metric: >
+      asciiGraphMetric: >
         sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod", pod!=""}) by (pod) / 1024 / 1024)
-      custom_key: "🥕 {{pod}}"
+      customKey: "🥕 {{pod}}"
       asciiGraphOptions:
         height: 0
         width: 80
@@ -83,14 +83,14 @@ dashboard:
       box: right_b
       type: progressBarList
       metricUnit: mb
-      metrics:
-        total_value_metric: |
+      progressBarListMetrics:
+        totalValueMetric: |
           # Memory limits
           sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod", pod!=""}) by (pod)
-        usage_value_metric: |
+        usageValueMetric: |
           # memory usage sorted by higher usage
           sort_desc(sum(container_memory_usage_bytes{namespace=~".*", pod=~".*", pod!=""}) by (pod))
-      custom_key: "{{pod}}"
+      customKey: "{{pod}}"
       progressBarListOptions:
         maxItemsCount: 50
         lineBreak: true
@@ -150,7 +150,7 @@ dashboard:
           metricUnit: byte
           autoConvertValue: true
           valueFromLabel: topology_ebs_csi_aws_com_zone
-      custom_key: "{{pod}}"
+      customKey: "{{pod}}"
       advancedTableOptions:
         tableType: plain # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
         headersUppercase: true
diff --git a/examples/dashboards/pvcs.yml b/examples/dashboards/pvcs.yml
index 39f255d..cafcbda 100644
--- a/examples/dashboards/pvcs.yml
+++ b/examples/dashboards/pvcs.yml
@@ -51,20 +51,17 @@ dashboard:
       enable: true
       type: asciiGraph
       metricUnit: mb
-      metric: |
+      asciiGraphMetric: |
         sort_desc(
           sum(kubelet_volume_stats_used_bytes{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"}) by (namespace, persistentvolumeclaim) / 1024 / 1024
         )
-      custom_key: "🍅 {{persistentvolumeclaim}}"
+      customKey: "🍅 {{persistentvolumeclaim}}"
       asciiGraphOptions:
         height: 0
         width: 200
         maxHeight: 17
         maxWidth: 45
         updateIntervalSeconds: 2
-      historyData:
-        enable: true
-        time: 5m
 
     - name: Persistent Volumes Usage (advancedTable example)
       enable: true
@@ -75,19 +72,23 @@ dashboard:
           metric: |
             sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
           metricUnit: byte
+          autoConvertValue: true
         - disk used:
           metric: |
             sum(kubelet_volume_stats_used_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
           metricUnit: byte
+          autoConvertValue: true
         - disk used %:
           metric: |
             (sum(kubelet_volume_stats_used_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname, node_kubernetes_io_instance_type) /
              sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname, node_kubernetes_io_instance_type)) * 100
           metricUnit: percentage
+          autoConvertValue: true
         - disk available:
           metric: |
             sum(kubelet_volume_stats_available_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
           metricUnit: byte
+          autoConvertValue: true
         - namespace:
           metric: |
             sum(kubelet_volume_stats_capacity_bytes{persistentvolumeclaim=~"$pvc", namespace=~"$namespace"}) by (persistentvolumeclaim, namespace, topology_kubernetes_io_zone, kubernetes_io_hostname,  node_kubernetes_io_instance_type)
@@ -117,11 +118,12 @@ dashboard:
           metric: |
             sum((kubelet_volume_stats_inodes_used{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"} / (kubelet_volume_stats_inodes_used{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"} + kubelet_volume_stats_inodes_free{namespace=~"$namespace", persistentvolumeclaim=~"$pvc"})) * 100) by (namespace, persistentvolumeclaim)
           metricUnit: percentage
+          autoConvertValue: true
+
 
-      custom_key: "💾 {{persistentvolumeclaim}}"
+      customKey: "💾 {{persistentvolumeclaim}}"
       advancedTableOptions:
         tableType: simple # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
         headersUppercase: true
-        autoConvertValue: true
         showTableIndex: true
         updateIntervalSeconds: 3
diff --git a/examples/dashboards/strimzi-kafka.yml b/examples/dashboards/strimzi-kafka.yml
deleted file mode 100644
index 35597c8..0000000
--- a/examples/dashboards/strimzi-kafka.yml
+++ /dev/null
@@ -1,212 +0,0 @@
-dashboard:
-  name: Kafka cluster
-  description: Staging Kafka dashboard
-  layout:
-    splitMode: row # row
-    fullScreen: true
-    header:
-      enable: false
-      size: 3
-      ratio: 1
-    body:
-      boxes:
-        left:
-          enable: true
-          size: 200
-          ratio: 1
-          split_mode: column
-          split:
-            left_a:
-              size: 0
-              ratio: 1
-            # left_b:
-            #   size: 25
-            #   ratio: 1
-            # left_c:
-            #   size: 0
-            #   ratio: 1
-            # left_d:
-            #   size: 0
-            #   ratio: 1
-        middle:
-          enable: false
-          size: 0
-          ratio: 1
-          split_mode: column
-          split:
-            middle_a:
-              size: 0
-              ratio: 1
-            middle_b:
-              size: 0
-              ratio: 1
-            middle_c:
-              size: 0
-              ratio: 1
-        right:
-          enable: true
-          size: 0
-          ratio: 1
-          split_mode: column
-          split:
-            right_a:
-              size: 0
-              ratio: 1
-            right_b:
-              size: 0
-              ratio: 1
-
-  # defaultDataSource:
-  #   type: prometheus
-  #   endpoint: ""
-  #   secure: false
-  #   basicAuthEnabled: false
-  #   basicAuthUserNameVariable: ""
-  #   basicAuthPasswordVariable: ""
-
-  variables:
-    - name: namespace
-      default: .*
-      cliArgument:
-        enable: true
-        short: -n
-        required: false
-    - name: kafka-topics-namespace
-      default: kafka-resources
-      cliArgument:
-        enable: true
-        short: -tn
-        required: false
-    - name: pod
-      default: .*
-      cliArgument:
-        enable: true
-        short: -po
-        required: false
-
-  visualization:
-    - name: Kafka Data In per second.
-      box: right_a
-      enable: true
-      type: asciiGraph
-      metricUnit: kb # byte_to_kb_mb_gb_tb # dynamic_byte_convert
-      metric: >
-        sort_desc(sum(irate(kafka_server_brokertopicmetrics_bytesin_total{topic=~"$topic"}[5m])) by (strimzi_io_cluster, topic)) / 1024
-      custom_key: "🍅 {{topic}}"
-      asciiGraphOptions:
-        height: 0
-        width: 80
-        maxHeight: 17
-        maxWidth: 45
-        updateIntervalSeconds: 2
-      historyData:
-        enable: true
-        time: 5m
-
-    - name: Kafka Data Out per second.
-      enable: true
-      box: right_b
-      type: asciiGraph # || progressBarList || asciiText
-      metricUnit: kb
-      metric: >
-        sort_desc(sum(irate(kafka_server_brokertopicmetrics_bytesout_total{topic=~"$topic"}[5m])) by (strimzi_io_cluster, topic)) / 1024
-      custom_key: "🥕 {{topic}}"
-      asciiGraphOptions:
-        height: 0
-        width: 80
-        maxHeight: 17
-        maxWidth: 45
-        updateIntervalSeconds: 2
-        # historyData:
-        #   enable: true
-        #   time: 5m
-
-    # - name: Kafka pods memory usage (Sorted by higher memory usage)
-    #   enable: false
-    #   box: left_a
-    #   type: progressBarList
-    #   metricUnit: mb
-    #   metrics:
-    #     total_value_metric: |
-    #       # Memory limits
-    #       sum(container_spec_memory_limit_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-    #     usage_value_metric: |
-    #       # memory usage sorted by higher usage
-    #       sort_desc(sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-    #   custom_key: "{{pod}}"
-    #   progressBarListOptions:
-    #     maxItemsCount: 10
-    #     lineBreak: true
-    #     showBarPercentage: true
-    #     barWidth: 25
-    #     updateIntervalSeconds: 5
-
-    # - name: Kafka Pods memory usage (simpleTable example)
-    #   enable: true
-    #   box: left_b
-    #   type: simpleTable
-    #   metricUnit: byte
-    #   metric: |
-    #     sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, namespace, karpenter_sh_capacity_type, topology_kubernetes_io_zone,node_kubernetes_io_instance_type)
-    #   # custom_key: |
-    #   #   f"{labels['pod']}"
-    #   simpleTableOptions:
-    #     tableType: plain # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
-    #     showValue: true
-    #     headersUppercase: true
-    #     autoConvertValue: true
-    #     showTableIndex: true
-    #     updateIntervalSeconds: 5
-    - name: Kafka pods details (advancedTable example)
-      enable: true
-      box: left_a
-      type: advancedTable
-      advancedTableColumns:
-        - memory usage:
-          metric: |
-            sort_desc(sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-          metricUnit: byte
-        - memory usage %:
-          metric: |
-            sort_desc(
-              (
-                sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-                /
-                sum(container_spec_memory_limit_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-              ) * 100
-            )
-          metricUnit: percentage
-        - memory limit:
-          metric: |
-            sort_desc(sum(container_spec_memory_limit_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-          metricUnit: byte
-        - memory cache:
-          metric: |
-            sort_desc(sum(container_memory_cache{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-          metricUnit: byte
-        - memory swap:
-          metric: |
-            sum(container_memory_swap{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-          metricUnit: byte
-          autoConvertValdue: true
-        # - file descriptors:
-        #   metric: |
-        #     sort_desc(sum(container_file_descriptors{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-        #   metricUnit: None
-        - CPU Usage Percentage:
-          metric: |
-            100 * sum(rate(container_cpu_usage_seconds_total{image!="", container!="POD", namespace=~".*"}[5m])) by (pod, namespace) /
-            sum(kube_pod_container_resource_limits{namespace=~".*", container!="POD"}) by (pod, namespace)
-          metricUnit: percentage
-        - AWS AZ:
-          metric: |
-            sort_desc(sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-          metricUnit: byte
-          valueFromLabel: topology_ebs_csi_aws_com_zone
-      custom_key: "{{pod}}" # "{{pod}} - {{topology_ebs_csi_aws_com_zone}}"
-      advancedTableOptions:
-        tableType: plain # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
-        headersUppercase: true
-        autoConvertValue: true
-        showTableIndex: true
-        updateIntervalSeconds: 3
diff --git a/kubePtop/command_run.py b/kubePtop/command_run.py
index 4a207a0..cc9f73b 100644
--- a/kubePtop/command_run.py
+++ b/kubePtop/command_run.py
@@ -5,7 +5,6 @@
 import logging
 from kubePtop.global_attrs import GlobalAttrs
 from kubePtop.session import PrometheusAPI
-# from kubePtop.ascii_graph import AsciiGraph
 from kubePtop.helper import Helper
 helper_ = Helper()
 
@@ -35,7 +34,7 @@ def run_custom_command(self, command_data, command_variables):
         self.variables = command_variables
         command_dct = command_data['data']['command']
         if command_dct['execute']['type'] == 'advancedTable':
-            self.build_advanced_table_command(name=command_dct['name'], layout_box_name=None, advanced_table_options=command_dct['execute'].get('advancedTableOptions', {}), metric_unit='kb', columns=command_dct['execute'].get('advancedTableColumns', {}), custom_key=command_dct['execute']['custom_key'])
+            self.build_advanced_table_command(name=command_dct['name'], layout_box_name=None, advanced_table_options=command_dct['execute'].get('advancedTableOptions', {}), metric_unit='kb', columns=command_dct['execute'].get('advancedTableColumns', {}), custom_key=command_dct['execute'].get('customKey', None))
 
 
     def get_metric_data(self, metric, custom_key=None, evaluate_cli_argument_variables=False, value_from_label=""):
@@ -151,28 +150,6 @@ def build_advanced_table_command(self, name, layout_box_name, advanced_table_opt
 
         table = [header]
         for column, column_info in columns_dct.items():
-            # metric_data = self.get_metric_data(column_info['metric'], custom_key=custom_key)
-        #     metric_data = self.get_metric_data(column_info['metric'], custom_key=custom_key, value_from_label=column_info.get('valueFromLabel', ''))
-
-
-            # if not metric_data['success']:
-            #     rich.print(f"[red]Failed to get data from query 'total_value_metric': [bold]{metric_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data['metric']}")
-            #     exit(1)
-
-        #     for name, value in metric_data['data'].items():
-        #         value_ = float(value['value'])
-        #         if auto_convert_value_:
-        #             value_ = helper_.convert_data_unit(value=value_, metric_unit=column_info['metricUnit'])
-        #         try:
-        #             data[name][column] = value_
-        #         except KeyError:
-        #             data[name] = {
-        #                 column: value_
-        #             }
-
-        # for name, value in data.items():
-        #     row = [name] + [value.get(col, '?') for col in columns_dct.keys()]  # Ensure order matches headers
-        #     table.append(row)
             metric_data = self.get_metric_data(column_info['metric'], custom_key=custom_key, value_from_label=column_info.get('valueFromLabel', ''))
 
             if not metric_data['success']:
@@ -198,7 +175,5 @@ def build_advanced_table_command(self, name, layout_box_name, advanced_table_opt
             row = [name] + [value.get(col, '?') for col in columns_dct.keys()]  # Ensure order matches headers
             table.append(row)
 
-
-
         out = tabulate(table, headers='firstrow', tablefmt=table_type_, showindex=show_table_index_)
         rich.print(out)
diff --git a/kubePtop/command_yaml_loader.py b/kubePtop/command_yaml_loader.py
index 22a8e43..7034780 100644
--- a/kubePtop/command_yaml_loader.py
+++ b/kubePtop/command_yaml_loader.py
@@ -103,7 +103,7 @@ def validate_command_schema(self, dashboard_yaml_data):
                                     }
                                 }
                             },
-                            'custom_key': {
+                            'customKey': {
                                 'type': 'string',
                                 'required': False,
                                 'default': ""
@@ -182,534 +182,6 @@ def validate_command_schema(self, dashboard_yaml_data):
             }
         }
 
-        # schema_dct = {
-
-        #     "dashboard": {
-        #         'type': 'dict',
-        #         'required': True,
-        #         'schema': {
-        #             "name": {
-        #                 'type': 'string',
-        #                 'required': True,
-        #             },
-        #             "description": {
-        #                 'type': 'string',
-        #                 'required': False,
-        #                 'default': ""
-        #             },
-        #             "layout": {
-        #                 'type': 'dict',
-        #                 'required': True,
-        #                 'schema': {
-        #                     'splitMode': {
-        #                         "type": "string",
-        #                         'required': False,
-        #                         'default': 'row',
-        #                         'allowed': [
-        #                             'row',
-        #                             'column'
-        #                         ]
-        #                     },
-        #                     'fullScreen': {
-        #                         "type": "boolean",
-        #                         'required': False,
-        #                         'default': True,
-        #                         'allowed': [
-        #                             True,
-        #                             False
-        #                         ]
-        #                     },
-        #                     "header": {
-        #                         'type': 'dict',
-        #                         'required': False,
-        #                         'schema': {
-        #                             'enable': {
-        #                                 "type": "boolean",
-        #                                 'required': False,
-        #                                 'default': False
-        #                             },
-        #                             'size': {
-        #                                 "type": "integer",
-        #                                 'required': False,
-        #                                 'default': 0
-        #                             },
-        #                             'ratio': {
-        #                                 "type": "integer",
-        #                                 'required': True,
-        #                                 'default': 1
-        #                             },
-        #                         }
-        #                     },
-        #                     'body': {
-        #                             'type': 'dict',
-        #                             'schema': {
-        #                                 'boxes': {
-        #                                     'type': 'dict',
-        #                                     'schema': {
-        #                                         'left': {
-        #                                             'type': 'dict',
-        #                                             'schema': {
-        #                                                 'enable': {
-        #                                                     'type': 'boolean',
-        #                                                     'required': True
-        #                                                 },
-        #                                                 'size': {
-        #                                                     'type': 'integer',
-        #                                                     'required': False,
-        #                                                     'default': 0
-        #                                                 },
-        #                                                 'ratio': {
-        #                                                     'type': 'integer',
-        #                                                     'required': False,
-        #                                                     'default': 1
-        #                                                 },
-        #                                                 'split_mode': {
-        #                                                     'type': 'string',
-        #                                                     'required': False,
-        #                                                     'default': 'row',
-        #                                                     'allowed': [
-        #                                                         'row',
-        #                                                         'column'
-        #                                                     ]
-        #                                                 },
-        #                                                 'split': {
-        #                                                     'type': 'dict',
-        #                                                     'required': False,
-        #                                                     'allow_unknown': True,
-        #                                                     'schema': {
-        #                                                         'size': {
-        #                                                             'type': 'integer',
-        #                                                             'required': False,
-        #                                                             'default': 0
-        #                                                         },
-        #                                                         'ratio': {
-        #                                                             'type': 'integer',
-        #                                                             'required': False,
-        #                                                             'default': 1
-        #                                                         }
-        #                                                     }
-        #                                                 }
-        #                                             }
-        #                                         },
-        #                                         'middle': {
-        #                                             'type': 'dict',
-        #                                             'schema': {
-        #                                                 'enable': {
-        #                                                     'type': 'boolean',
-        #                                                     'required': True
-        #                                                 },
-        #                                                 'size': {
-        #                                                     'type': 'integer',
-        #                                                     'required': False,
-        #                                                     'default': 0
-        #                                                 },
-        #                                                 'ratio': {
-        #                                                     'type': 'integer',
-        #                                                     'required': False,
-        #                                                     'default': 1
-        #                                                 },
-        #                                                 'split_mode': {
-        #                                                     'type': 'string',
-        #                                                     'required': False,
-        #                                                     'default': 'row',
-        #                                                     'allowed': [
-        #                                                         'row',
-        #                                                         'column'
-        #                                                     ]
-        #                                                 },
-        #                                                 'split': {
-        #                                                     'type': 'dict',
-        #                                                     'required': False,
-        #                                                     'allow_unknown': True,
-        #                                                     'schema': {
-        #                                                         'size': {
-        #                                                             'type': 'integer',
-        #                                                             'required': False,
-        #                                                             'default': 0
-        #                                                         },
-        #                                                         'ratio': {
-        #                                                             'type': 'integer',
-        #                                                             'required': False,
-        #                                                             'default': 1
-        #                                                         }
-        #                                                     }
-        #                                                 }
-        #                                             }
-        #                                         },
-        #                                         'right': {
-        #                                             'type': 'dict',
-        #                                             'schema': {
-        #                                                 'enable': {
-        #                                                     'type': 'boolean',
-        #                                                     'required': True
-        #                                                 },
-        #                                                 'size': {
-        #                                                     'type': 'integer',
-        #                                                     'required': False,
-        #                                                     'default': 0
-        #                                                 },
-        #                                                 'ratio': {
-        #                                                     'type': 'integer',
-        #                                                     'required': False,
-        #                                                     'default': 1
-        #                                                 },
-        #                                                 'split_mode': {
-        #                                                     'type': 'string',
-        #                                                     'required': False,
-        #                                                     'default': 'row',
-        #                                                     'allowed': [
-        #                                                         'row',
-        #                                                         'column'
-        #                                                     ]
-        #                                                 },
-        #                                                 'split': {
-        #                                                     'type': 'dict',
-        #                                                     'required': False,
-        #                                                     'allow_unknown': True,
-        #                                                     'schema': {
-        #                                                         'size': {
-        #                                                             'type': 'integer',
-        #                                                             'required': False,
-        #                                                             'default': 0
-        #                                                         },
-        #                                                         'ratio': {
-        #                                                             'type': 'integer',
-        #                                                             'required': False,
-        #                                                             'default': 1
-        #                                                         }
-        #                                                     }
-        #                                                 }
-        #                                             }
-        #                                         }
-        #                                     }
-        #                                 }
-        #                             }
-        #                         },
-        #                 }
-        #             },
-        #             'variables': {
-        #                 'type': 'list',
-        #                 'schema': {
-        #                     'type': 'dict',
-        #                     'schema': {
-        #                         'name': {
-        #                             'type': 'string',
-        #                             'required': True
-        #                         },
-        #                         'default': {
-        #                             'type': 'string',
-        #                             'required': True,
-        #                         },
-        #                         'cliArgument': {
-        #                             'type': 'dict',
-        #                             'schema': {
-        #                                 'enable': {
-        #                                     'type': 'boolean',
-        #                                     'required': True
-        #                                 },
-        #                                 'short': {
-        #                                     'type': 'string',
-        #                                     'required': True,
-        #                                     'regex': r'^-\w{1,2}$'
-        #                                 },
-        #                                 'required': {
-        #                                     'type': 'boolean',
-        #                                     'default': True,
-        #                                     'required': False
-        #                                 },
-        #                                 'description': {
-        #                                     'type': 'string',
-        #                                     'required': False
-        #                                 }
-        #                             }
-        #                         }
-        #                     }
-        #                 }
-        #             },
-        #             'visualization': {
-        #                     'type': 'list',
-        #                     'schema': {
-        #                         'type': 'dict',
-        #                         'allow_unknown': True,
-        #                         'schema': {
-        #                             'name': {
-        #                                 'type': 'string',
-        #                                 'required': True
-        #                             },
-        #                             'box': {
-        #                                 'type': 'string',
-        #                                 'required': True
-        #                             },
-        #                             'enable': {
-        #                                 'type': 'boolean',
-        #                                 'required': False,
-        #                                 'default': True
-        #                             },
-        #                             'type': {
-        #                                 'type': 'string',
-        #                                 'required': True,
-        #                                 'allowed': [
-        #                                     'asciiGraph',
-        #                                     'progressBarList',
-        #                                     'simpleTable',
-        #                                     'advancedTable',
-        #                                 ]
-        #                             },
-        #                             'metricUnit': {
-        #                                 'type': 'string',
-        #                                 'required': True,
-        #                                 'allowed': [
-        #                                     'byte',
-        #                                     'kb',
-        #                                     'mb',
-        #                                     'gb',
-        #                                     'tb',
-        #                                     'seconds'
-        #                                 ]
-        #                             },
-        #                             'metric': {
-        #                                 'type': 'string'
-        #                             },
-        #                             'custom_key': {
-        #                                 'type': 'string',
-        #                                 'required': False,
-        #                             },
-        #                             'asciiGraphOptions': {
-        #                                 'type': 'dict',
-        #                                 'schema': {
-        #                                     'height': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 0,
-        #                                     },
-        #                                     'width': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 80,
-        #                                     },
-        #                                     'maxHeight': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 17,
-        #                                     },
-        #                                     'maxWidth': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 45,
-        #                                     },
-        #                                     'updateIntervalSeconds': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 5,
-        #                                     }
-        #                                 }
-        #                             },
-        #                             'progressBarListOptions': {
-        #                                 'type': 'dict',
-        #                                 'schema': {
-        #                                     'maxItemsCount': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 0,
-        #                                     },
-        #                                     'lineBreak': {
-        #                                         'type': 'boolean',
-        #                                         'required': False,
-        #                                         'default': True,
-        #                                     },
-        #                                     'showBarPercentage': {
-        #                                         'type': 'boolean',
-        #                                         'required': False,
-        #                                         'default': True,
-        #                                     },
-        #                                     'barWidth': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 25,
-        #                                     },
-        #                                     'updateIntervalSeconds': {
-        #                                         'type': 'integer',
-        #                                         'required': False,
-        #                                         'default': 5,
-        #                                     }
-        #                                 }
-        #                             },
-        #                             'simpleTableOptions': {
-        #                                 'type': 'dict',
-        #                                 'schema': {
-        #                                     'tableType': {
-        #                                         'type': 'string',
-        #                                         'required': False,
-        #                                         'default': 'plain',
-        #                                         'allowed': [
-        #                                             'plain',
-        #                                             'simple',
-        #                                             'github',
-        #                                             'grid',
-        #                                             'simple_grid',
-        #                                             'rounded_grid',
-        #                                             'heavy_grid',
-        #                                             'mixed_grid',
-        #                                             'double_grid',
-        #                                             'fancy_grid',
-        #                                             'outline',
-        #                                             'simple_outline',
-        #                                             'rounded_outline',
-        #                                             'heavy_outline',
-        #                                             'mixed_outline',
-        #                                             'double_outline',
-        #                                             'fancy_outline',
-        #                                             'pipe',
-        #                                             'orgtbl',
-        #                                             'asciidoc',
-        #                                             'jira',
-        #                                             'presto',
-        #                                             'pretty',
-        #                                             'psql',
-        #                                             'rst',
-        #                                             'mediawiki',
-        #                                             'moinmoin',
-        #                                             'youtrack',
-        #                                             'html',
-        #                                             'unsafehtml',
-        #                                             'latex',
-        #                                             'latex_raw',
-        #                                             'latex_booktabs',
-        #                                             'latex_longtable',
-        #                                             'textile',
-        #                                             'tsv',
-        #                                         ]
-        #                                     },
-        #                                     'showValue': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': True,
-        #                                     },
-        #                                     'headersUppercase': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': True,
-        #                                     },
-        #                                     'autoConvertValue': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': False,
-        #                                     },
-        #                                     'showTableIndex': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': False,
-        #                                     },
-        #                                     'updateIntervalSeconds': {
-        #                                         'type': 'integer',
-        #                                         'required': True,
-        #                                         'default': 5,
-        #                                     }
-        #                                 }
-        #                             },
-        #                             'advancedTableColumns': {
-        #                                 'type': 'list',
-        #                                 'required': False,
-        #                                 'schema': {
-        #                                     'type': 'dict',
-        #                                     'required': True,
-        #                                     'allow_unknown': True,
-        #                                     'schema': {
-        #                                         'metric': {
-        #                                             'type': 'string',
-        #                                             'required': True
-        #                                         },
-        #                                         'metricUnit': {
-        #                                             'type': 'string',
-        #                                             'required': True,
-        #                                             'allowed': [
-        #                                                 'kb',
-        #                                                 'byte',
-        #                                                 'mb',
-        #                                                 'gb',
-        #                                                 'tb',
-        #                                                 'seconds',
-        #                                             ]
-        #                                         }
-        #                                     }
-        #                                 }
-        #                             },
-        #                             'advancedTableOptions': {
-        #                                 'type': 'dict',
-        #                                 'schema': {
-        #                                     'tableType': {
-        #                                         'type': 'string',
-        #                                         'required': False,
-        #                                         'default': 'plain',
-        #                                         'allowed': [
-        #                                             'plain',
-        #                                             'simple',
-        #                                             'github',
-        #                                             'grid',
-        #                                             'simple_grid',
-        #                                             'rounded_grid',
-        #                                             'heavy_grid',
-        #                                             'mixed_grid',
-        #                                             'double_grid',
-        #                                             'fancy_grid',
-        #                                             'outline',
-        #                                             'simple_outline',
-        #                                             'rounded_outline',
-        #                                             'heavy_outline',
-        #                                             'mixed_outline',
-        #                                             'double_outline',
-        #                                             'fancy_outline',
-        #                                             'pipe',
-        #                                             'orgtbl',
-        #                                             'asciidoc',
-        #                                             'jira',
-        #                                             'presto',
-        #                                             'pretty',
-        #                                             'psql',
-        #                                             'rst',
-        #                                             'mediawiki',
-        #                                             'moinmoin',
-        #                                             'youtrack',
-        #                                             'html',
-        #                                             'unsafehtml',
-        #                                             'latex',
-        #                                             'latex_raw',
-        #                                             'latex_booktabs',
-        #                                             'latex_longtable',
-        #                                             'textile',
-        #                                             'tsv',
-        #                                         ]
-        #                                     },
-        #                                     'headersUppercase': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': True,
-        #                                     },
-        #                                     'autoConvertValue': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': False,
-        #                                     },
-        #                                     'showTableIndex': {
-        #                                         'type': 'boolean',
-        #                                         'required': True,
-        #                                         'default': False,
-        #                                     },
-        #                                     'updateIntervalSeconds': {
-        #                                         'type': 'integer',
-        #                                         'required': True,
-        #                                         'default': 5,
-        #                                     }
-        #                                 }
-        #                             }
-        #                         }
-        #                     }
-        #                 }
-        #         }
-        #     },
-        # }
-        # return schema_dct
-
         v = Validator(schema_dct)
         v.validate(dashboard_yaml_data)
         if v.errors:
diff --git a/kubePtop/dashboard_monitor.py b/kubePtop/dashboard_monitor.py
index 4992d8a..bfe173b 100644
--- a/kubePtop/dashboard_monitor.py
+++ b/kubePtop/dashboard_monitor.py
@@ -51,56 +51,6 @@ def run_query(self, query):
 
         return query
 
-    # def build_parser(self, variables):
-    #     parser = argparse.ArgumentParser(description='Process some CLI arguments.')
-    #     for var in variables:
-    #         if var['cliArgument']['enable']:
-    #             if var['name'] == 'vhelp':
-    #                 parser.add_argument(
-    #                     f"--{var['name']}",
-    #                     var['cliArgument']['short'],
-    #                     required=var['cliArgument']['required'],
-    #                     action='store_true',
-    #                     help=var['cliArgument'].get('description', f'Specify the {var["name"]} variable value - default: "{var["default"]}"')
-    #                 )
-    #             else:
-    #                 parser.add_argument(
-    #                     f"--{var['name']}",
-    #                     var['cliArgument']['short'],
-    #                     required=var['cliArgument']['required'],
-    #                     default=var['default'],
-    #                     help=var['cliArgument'].get('description', f'Specify the {var["name"]} variable value - default: "{var["default"]}"')
-    #                 )
-    #     return parser
-
-    # def build_variables(self, inital_args, variables):
-    #     # Combine default CLI args and dashboard variables
-    #     all_variables = inital_args + variables
-
-    #     # Rebuild the parser with all variables
-    #     final_parser = self.build_parser(all_variables)
-
-    #     # Parse all arguments with the final parser, ignoring unknown args
-    #     final_args, unknown_args = final_parser.parse_known_args()
-    #     rich.print("Parsed arguments:", final_args)
-    #     rich.print("Unknown arguments:", unknown_args)
-
-    #     # Store the arguments in the variables dictionary
-    #     args_dict = vars(final_args)
-    #     if args_dict.get('vhelp'):
-    #         final_parser.print_help()
-    #         return
-
-    #     for arg, value in args_dict.items():
-    #         self.variables[arg] = value
-
-    #     for arg, value in args_dict.items():
-    #         if value == 'ALL':
-    #             value = ".*"
-    #         self.variables[arg] = value
-
-    #     return final_args
-
     def build_custom_dashboard(self, dashboard_data, dashboard_variables, print_layout=False):
 
         # Build the Layout structure
@@ -117,25 +67,25 @@ def update_layout_visualization(self, layout_structure_dct):
         for visualization in visualization_dct:
             if visualization.get('enable', True):
                 if visualization['type'] == 'asciiGraph':
-                    if 'custom_key' in visualization:
-                        self.build_ascii_graph_handler(name=visualization['name'], layout_box_name=visualization['box'], graph_options=visualization.get('asciiGraphOptions', {}), metric_unit=visualization['metricUnit'], metric=visualization['metric'], custom_key=visualization.get('custom_key', ''))
+                    if 'customKey' in visualization:
+                        self.build_ascii_graph_handler(name=visualization['name'], layout_box_name=visualization['box'], graph_options=visualization.get('asciiGraphOptions', {}), metric_unit=visualization['metricUnit'], metric=visualization['asciiGraphMetric'], custom_key=visualization.get('customKey', ''))
                     else:
-                        self.build_ascii_graph_handler(name=visualization['name'], layout_box_name=visualization['box'], graph_options=visualization.get('asciiGraphOptions', {}), metric_unit=visualization['metricUnit'], metric=visualization['metric'])
+                        self.build_ascii_graph_handler(name=visualization['name'], layout_box_name=visualization['box'], graph_options=visualization.get('asciiGraphOptions', {}), metric_unit=visualization['metricUnit'], metric=visualization['asciiGraphMetric'])
 
                 elif visualization['type'] == 'progressBarList':
-                    if 'custom_key' in visualization:
-                        self.build_progress_bar_list_handler(name=visualization['name'], layout_box_name=visualization['box'], progress_bar_list_options=visualization.get('progressBarListOptions', {}), metric_unit=visualization['metricUnit'], total_value_metric=visualization['metrics']['total_value_metric'], usage_value_metric=visualization['metrics']['usage_value_metric'], custom_key=visualization['custom_key'])
+                    if 'customKey' in visualization:
+                        self.build_progress_bar_list_handler(name=visualization['name'], layout_box_name=visualization['box'], progress_bar_list_options=visualization.get('progressBarListOptions', {}), metric_unit=visualization['metricUnit'], total_value_metric=visualization['progressBarListMetrics'].get('totalValueMetric', ''), usage_value_metric=visualization['progressBarListMetrics'].get('usageValueMetric', ''), custom_key=visualization.get('customKey', None))
                     else:
-                        self.build_progress_bar_list_handler(name=visualization['name'], layout_box_name=visualization['box'], progress_bar_list_options=visualization.get('progressBarListOptions', {}), metric_unit=visualization['metricUnit'], total_value_metric=visualization['metrics']['total_value_metric'], usage_value_metric=visualization['metrics']['usage_value_metric'])
+                        self.build_progress_bar_list_handler(name=visualization['name'], layout_box_name=visualization['box'], progress_bar_list_options=visualization.get('progressBarListOptions', {}), metric_unit=visualization['metricUnit'], total_value_metric=visualization['progressBarListMetrics'].get('totalValueMetric', ''), usage_value_metric=visualization['progressBarListMetrics'].get('usageValueMetric', ''))
 
                 elif visualization['type'] == 'simpleTable':
-                    self.build_simple_table_handler(name=visualization['name'], layout_box_name=visualization['box'], simple_table_options=visualization.get('simpleTableOptions', {}), metric_unit=visualization.get('metricUnit', 'None'), metric=visualization['metric'])
+                    self.build_simple_table_handler(name=visualization['name'], layout_box_name=visualization['box'], simple_table_options=visualization.get('simpleTableOptions', {}), metric_unit=visualization.get('metricUnit', 'None'), metric=visualization.get('simpleTableMetric', ''))
 
                 elif visualization['type'] == 'advancedTable':
-                    if 'custom_key' in visualization:
-                        self.build_advanced_table_handler(name=visualization['name'], layout_box_name=visualization['box'], advanced_table_options=visualization.get('advancedTableOptions', {}), metric_unit=visualization.get('metricUnit', ''), columns=visualization['advancedTableColumns'], custom_key=visualization.get('custom_key', ''))
+                    if 'customKey' in visualization:
+                        self.build_advanced_table_handler(name=visualization['name'], layout_box_name=visualization['box'], advanced_table_options=visualization.get('advancedTableOptions', {}), metric_unit=visualization.get('metricUnit', ''), columns=visualization.get('advancedTableColumns', []), custom_key=visualization.get('customKey', ''))
                     else:
-                        self.build_advanced_table_handler(name=visualization['name'], layout_box_name=visualization['box'], advanced_table_options=visualization.get('advancedTableOptions', {}), metric_unit=visualization['metricUnit'], columns=visualization['columns'])
+                        self.build_advanced_table_handler(name=visualization['name'], layout_box_name=visualization['box'], advanced_table_options=visualization.get('advancedTableOptions', {}), metric_unit=visualization.get('metricUnit', ''), columns=visualization.get('advancedTableColumns', []))
 
                 else:
                     pass
@@ -453,7 +403,7 @@ def build_ascii_graph(self, name, layout_box_name, graph_options, metric_unit, m
             metric_data_dct = self.get_metric_data(metric=metric, custom_key=custom_key)
 
             if not metric_data_dct['success']:
-                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'total_value_metric': [bold]{metric_data_dct['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data_dct['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
+                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'totalValueMetric': [bold]{metric_data_dct['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data_dct['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
 
             data_graph = AsciiGraph()
 
@@ -507,11 +457,11 @@ def build_progress_bar_list(self, name, layout_box_name, progress_bar_list_optio
             # Get usage data
             total_data = self.get_metric_data(total_value_metric, custom_key=custom_key)
             if not total_data['success']:
-                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'total_value_metric': [bold]{total_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{total_data['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
+                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'totalValueMetric': [bold]{total_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{total_data['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
 
             usage_data = self.get_metric_data(usage_value_metric, custom_key=custom_key)
             if not usage_data['success']:
-                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'total_value_metric': [bold]{total_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{total_data['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
+                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'totalValueMetric': [bold]{total_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{total_data['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
 
             data = {}
             for k, v in usage_data['data'].items():
@@ -602,7 +552,7 @@ def build_simple_table(self, name, layout_box_name, simple_table_options, metric
             # Get metric data
             metric_data_dct = self.get_metric_data(metric, custom_key=custom_key)
             if not metric_data_dct['success']:
-                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'total_value_metric': [bold]{metric_data_dct['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data_dct['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
+                self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'totalValueMetric': [bold]{metric_data_dct['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data_dct['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
 
             first_dict_item = next(iter(metric_data_dct['data'].items()))[0]
             dict_keys = list(ast.literal_eval(first_dict_item).keys())
@@ -687,7 +637,7 @@ def build_advanced_table(self, name, layout_box_name, advanced_table_options, me
                 metric_data = self.get_metric_data(column_info['metric'], custom_key=custom_key, value_from_label=column_info.get('valueFromLabel', ''))
 
                 if not metric_data['success']:
-                    self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'total_value_metric': [bold]{metric_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
+                    self.layout[layout_box_name].update(Panel(f"[red]Failed to get data from query 'totalValueMetric': [bold]{metric_data['fail_reason']}[/bold][/red]\n\n[bold]METRIC:[/bold]\n[grey53]{metric_data['metric']}", title=f"[b]{name}", padding=(1, 1), expand=True, safe_box=True, highlight=True, height=0))
 
                 for name, value in metric_data['data'].items():
                     try:
diff --git a/kubePtop/dashboard_yaml_loader.py b/kubePtop/dashboard_yaml_loader.py
index fd089c5..6532ce2 100644
--- a/kubePtop/dashboard_yaml_loader.py
+++ b/kubePtop/dashboard_yaml_loader.py
@@ -15,6 +15,12 @@ def __init__(self) -> None:
             'seconds',
             'percentage'
         ]
+        self.allowed_data_types = [
+            'asciiGraph',
+            'progressBarList',
+            'simpleTable',
+            'advancedTable',
+        ]
 
     def validate_dashboard_schema(self, dashboard_yaml_data):
         schema_dct = {
@@ -271,7 +277,7 @@ def validate_dashboard_schema(self, dashboard_yaml_data):
                             'type': 'list',
                             'schema': {
                                 'type': 'dict',
-                                'allow_unknown': True,
+                                'allow_unknown': False,
                                 'schema': {
                                     'name': {
                                         'type': 'string',
@@ -289,12 +295,7 @@ def validate_dashboard_schema(self, dashboard_yaml_data):
                                     'type': {
                                         'type': 'string',
                                         'required': True,
-                                        'allowed': [
-                                            'asciiGraph',
-                                            'progressBarList',
-                                            'simpleTable',
-                                            'advancedTable',
-                                        ]
+                                        'allowed': self.allowed_data_types
                                     },
                                     'metricUnit': {
                                         'type': 'string',
@@ -302,10 +303,19 @@ def validate_dashboard_schema(self, dashboard_yaml_data):
                                         'default': 'None',
                                         'allowed': self.allowed_metric_unit_types
                                     },
-                                    'metric': {
-                                        'type': 'string'
+                                    'asciiGraphMetric': {
+                                        'type': 'string',
+                                        'required': False
+                                    },
+                                    'progressBarListMetrics': {
+                                        'type': 'dict',
+                                        'required': False
+                                    },
+                                    'simpleTableMetric': {
+                                        'type': 'string',
+                                        'required': False
                                     },
-                                    'custom_key': {
+                                    'customKey': {
                                         'type': 'string',
                                         'default': '',
                                         'required': False,
@@ -564,18 +574,6 @@ def load_dashboard_data(self, command_content_content):
             "data": None,
             "fail_reason": ""
         }
-
-
-
-        # Check if the yaml file exists in the dashboards directory
-        ## If so, return the file path
-        ### The dashboard dir is taken as ENV
-        # yaml_file = dashboard_name
-        # # Check if the file does NOT exist
-        # if not os.path.isfile(yaml_file):
-        #     out['fail_reason'] = f"Dashboard File '{yaml_file}' does NOT exist"
-        #     return out
-
         # Read the file
         try:
             # with open(yaml_file, 'r') as file:


Test patch:
diff --git a/docs/images/dashboard-strimzi-kafka-test.png b/docs/images/dashboard-strimzi-kafka-test.png
new file mode 100644
index 0000000..8351536
Binary files /dev/null and b/docs/images/dashboard-strimzi-kafka-test.png differ
diff --git a/examples/dashboards/test.yml b/examples/dashboards/strimzi-kafka-test.yml
similarity index 66%
rename from examples/dashboards/test.yml
rename to examples/dashboards/strimzi-kafka-test.yml
index 31be9f7..e23e30c 100644
--- a/examples/dashboards/test.yml
+++ b/examples/dashboards/strimzi-kafka-test.yml
@@ -2,7 +2,7 @@ dashboard:
   name: Kafka cluster
   description: Staging Kafka dashboard
   layout:
-    splitMode: row # row
+    splitMode: row
     fullScreen: true
     header:
       enable: false
@@ -25,9 +25,6 @@ dashboard:
             left_c:
               size: 0
               ratio: 1
-            # left_d:
-            #   size: 0
-            #   ratio: 1
         middle:
           enable: false
           size: 0
@@ -56,34 +53,20 @@ dashboard:
               size: 0
               ratio: 1
 
-  # defaultDataSource:
-  #   type: prometheus
-  #   endpoint: ""
-  #   secure: false
-  #   basicAuthEnabled: false
-  #   basicAuthUserNameVariable: ""
-  #   basicAuthPasswordVariable: ""
-
   variables:
     - name: topic
       default: .*
       cliArgument:
         enable: true
         short: -t
-        required: true
+        required: false
         description: "Kafka Topic Name"
     - name: namespace
-      default: .*
+      default: default
       cliArgument:
         enable: true
         short: -n
         required: false
-    - name: kafka-topics-namespace
-      default: kafka-resources
-      cliArgument:
-        enable: true
-        short: -tn
-        required: false
     - name: pod
       default: .*
       cliArgument:
@@ -95,52 +78,46 @@ dashboard:
     - name: Kafka Data In per second.
       box: right_a
       enable: true
-      type: asciiGraph # || progressBar || asciiText || markdown || markdown Table ||Table
-      metricUnit: kb # byte_to_kb_mb_gb_tb # dynamic_byte_convert
-      metric: >
+      type: asciiGraph
+      metricUnit: kb
+      asciiGraphMetric: >
         sort_desc(sum(irate(kafka_server_brokertopicmetrics_bytesin_total{topic=~"$topic"}[5m])) by (strimzi_io_cluster, topic)) / 1024
-      custom_key: "🍅 {{topic}}"
+      customKey: "🍅 {{topic}}"
       asciiGraphOptions:
         height: 0
         width: 80
         maxHeight: 17
         maxWidth: 45
         updateIntervalSeconds: 2
-      historyData:
-        enable: true
-        time: 5m
 
     - name: Kafka Data Out per second.
       enable: true
       box: right_b
-      type: asciiGraph # || progressBarList || asciiText
+      type: asciiGraph
       metricUnit: kb
-      metric: >
+      asciiGraphMetric: >
         sort_desc(sum(irate(kafka_server_brokertopicmetrics_bytesout_total{topic=~"$topic"}[5m])) by (strimzi_io_cluster, topic)) / 1024
-      custom_key: "🥕 {{topic}}"
+      customKey: "🥕 {{topic}}"
       asciiGraphOptions:
         height: 0
         width: 80
         maxHeight: 17
         maxWidth: 45
         updateIntervalSeconds: 2
-        # historyData:
-        #   enable: true
-        #   time: 5m
 
     - name: Kafka pods memory usage (Sorted by higher memory usage)
       enable: true
       box: left_a
       type: progressBarList
       metricUnit: mb
-      metrics:
-        total_value_metric: |
+      progressBarListMetrics:
+        totalValueMetric: |
           # Memory limits
-          sum(container_spec_memory_limit_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
-        usage_value_metric: |
+          sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+        usageValueMetric: |
           # memory usage sorted by higher usage
-          sort_desc(sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
-      custom_key: "{{pod}}"
+          sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+      customKey: "{{pod}}"
       progressBarListOptions:
         maxItemsCount: 10
         lineBreak: true
@@ -153,10 +130,9 @@ dashboard:
       box: left_b
       type: simpleTable
       metricUnit: byte
-      metric: |
-        sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, namespace, karpenter_sh_capacity_type, topology_kubernetes_io_zone,node_kubernetes_io_instance_type)
-      # custom_key: |
-      #   f"{labels['pod']}"
+      simpleTableMetric: |
+        sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, namespace, karpenter_sh_capacity_type, topology_kubernetes_io_zone,node_kubernetes_io_instance_type)
+      customKey: "{{pod}}"
       simpleTableOptions:
         tableType: plain # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
         showValue: true
@@ -171,48 +147,52 @@ dashboard:
       advancedTableColumns:
         - memory usage:
           metric: |
-            sort_desc(sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+            sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
           metricUnit: byte
+          autoConvertValue: true
         - memory usage %:
           metric: |
             sort_desc(
               (
-                sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+                sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
                 /
-                sum(container_spec_memory_limit_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+                sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
               ) * 100
             )
           metricUnit: percentage
+          autoConvertValue: true
         - memory limit:
           metric: |
-            sort_desc(sum(container_spec_memory_limit_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+            sort_desc(sum(container_spec_memory_limit_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
           metricUnit: byte
+          autoConvertValue: true
         - memory cache:
           metric: |
-            sort_desc(sum(container_memory_cache{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+            sort_desc(sum(container_memory_cache{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
           metricUnit: byte
+          autoConvertValue: true
         - memory swap:
           metric: |
-            sum(container_memory_swap{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
+            sum(container_memory_swap{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone)
           metricUnit: byte
-          autoConvertValdue: true
+          autoConvertValue: true
         # - file descriptors:
         #   metric: |
-        #     sort_desc(sum(container_file_descriptors{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+        #     sort_desc(sum(container_file_descriptors{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
         #   metricUnit: None
         - up time:
           metric: |
-            sum(time() - kube_pod_start_time{namespace="$namespace", pod=~"$pod"}) by (pod)
+            sum(time() - kube_pod_start_time{namespace=~"$namespace", pod=~"$pod"}) by (pod)
           metricUnit: seconds
+          autoConvertValue: true
         - AWS AZ:
           metric: |
-            sort_desc(sum(container_memory_usage_bytes{namespace="$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
+            sort_desc(sum(container_memory_usage_bytes{namespace=~"$namespace", pod=~"$pod"}) by (pod, topology_ebs_csi_aws_com_zone))
           metricUnit: byte
           valueFromLabel: topology_ebs_csi_aws_com_zone
-      custom_key: "{{pod}}" # "{{pod}} - {{topology_ebs_csi_aws_com_zone}}"
+      customKey: "{{pod}}"
       advancedTableOptions:
         tableType: grid # https://github.com/astanin/python-tabulate?tab=readme-ov-file#table-format
         headersUppercase: true
-        autoConvertValue: true
         showTableIndex: true
         updateIntervalSeconds: 3