diff --git a/README.md b/README.md
index 6e50330..eac7a32 100644
--- a/README.md
+++ b/README.md
@@ -2,19 +2,22 @@

# wa*ll*bash
+
A fast and minimal wallpaper engine for HyDE
-Use `wallbash` as a core component of your Wayland desktop environment — set wallpapers, generate color palettes, and dynamically theme your desktop.
+Use `wallbash` as a core component of your Wayland desktop environment — set wallpapers, generate color palettes, and apply dynamic themes to your desktop.
## Features
-- Vulkan-powered GPU acceleration for smooth performance
-- Color palette generation for dynamic theming
+- GPU acceleration powered by `vulkan` for smooth, high‑performance rendering
+- Dynamic color palette generation based on Material Design with `auto`, `dark`, and `light` modes
+- Built for Wayland, using the `layer-shell` protocol for seamless integration
+- Scale the image to your liking using `cover`, `fit`, or `original` modes
+- Precise anchor point positioning from `1` to `9` for fine‑tuned wallpaper placement
+- Automatic background blur fill for mismatched aspect ratios, eliminating black bars
- Fluid transitions and animations*
- Multi-monitor support*
-- Scale and anchor the image to your liking
-- Dynamic blur fill for mismatched aspect ratios to eliminate black bars
*work in progress
@@ -44,32 +47,35 @@ wallbash set [option]
-w, --wall # Wallpaper file /path/to/file.img
```
-The Rust binary compiles to a single executable, `wallbash`. It acts as both a client and a daemon:
-- `wallbash start` Launches the daemon (background process). The daemon initializes the Wayland and Vulkan subsystems and listens for commands on a Unix socket.
-- `wallbash set` Sends a command to load and display the image. If the daemon is not running, it automatically starts it and waits for it to be ready before sending the command.
-- `wallbash stop` Terminate the daemon.
-- `wallbash status` Query the daemon status.
-
## Architecture
-```
-src/
-├── main.rs
-├── wallbash.rs
-├── wayland.rs
-├── vulkan.rs
-├── filters.rs
-└── colors.rs
-```
+Wallbash is a **single binary** that can run in two modes:
+
+- **Client Mode:** Run `wallbash set --wall ...` to set a wallpaper. The command either:
+ - Connects to an existing daemon and sends the command, or
+ - Starts the daemon automatically if it's not already running, then sends the command.
+
+- **Daemon Mode:** Run `wallbash start` to explicitly launch the daemon, or let it be started automatically on first use. The daemon:
+ - Manages the Wayland surface and Vulkan rendering pipeline.
+ - Listens for commands via a Unix socket (`/tmp/wallbash.sock`).
+ - Handles wallpaper transitions, animations, and multi‑monitor setups.
+ - Persists in the background until stopped with `wallbash stop`.
+
+The core **modules** are structured as:
+
+- **main.rs** The CLI entry point. Parses command-line arguments and routes them to the appropriate handler (start, stop, set, status). It also manages the daemon lifecycle and socket communication.
+- **wallbash.rs** The core daemon logic. Manages server, handles incoming commands, and coordinates the rendering pipeline. It acts as the central controller for other modules.
+- **wayland.rs** Handles the Wayland connection. Creates and manages the surface, sets up the output, and handles window events. This is the interface between wallbash and your Wayland compositor.
+- **vulkan.rs** Handles the GPU initialization, texture creation, shader compilation, and draws the wallpaper surface using Vulkan. This provides the image rendering pipeline.
+- **filters.rs** Applies Vulkan compute shaders which currently implements a blur effect for the background. The module is designed to be extensible for additional filters in future.
+- **colors.rs** Extracts the dominant color from the wallpaper using k-means clustering, converts colors and generates a full Material Design color palette. Its then deployed to your config files using built-in template system.
+
+
+## Theming
-The core project is structured in simple modules:
-- `main.rs` Entry point of the binary. Works as a CLI tool to parse arguments and handle the daemon.
-- `wallbash.rs` The core daemon module. It manages the IPC listener, handles incoming commands, and orchestrates the wallpaper loading and rendering process.
-- `wayland.rs` Handles the Wayland integration. It creates a Wayland surface, binds to the layer shell protocol, and sets up the layer surface for the wallpaper.
-- `vulkan.rs` Manages the Vulkan rendering pipeline. Initializes Vulkan instance, selects physical device (preferring discrete GPU), creates swapchain, and renders the wallpaper.
-- `filters.rs` – Implements image filters and post‑processing effects, including dynamic background blur, scaling algorithms, and other visual transformations.
-- `colors.rs` – Auto detects and generates light and dark color palettes based on google's material design from the wallpaper’s dominant color using k‑means clustering.
+Wallbash generates a color palette from your wallpaper. You can use these colors to dynamically theme your entire desktop environment.
+For detailed guides, usage, and application specific examples, check out the [wiki](https://github.com/prasanthrangan/wallbash/wiki) *(work in progress)*.
###### *// HyDE
*

diff --git a/src/colors.rs b/src/colors.rs
index c3c7ecd..1d3b7aa 100644
--- a/src/colors.rs
+++ b/src/colors.rs
@@ -350,7 +350,7 @@ pub fn dcol(img: &DynamicImage, palette: &str) {
// k-means clustering
let k = 8usize;
- let max_iter = 20;
+ let max_iter = 10;
let mut centroids = Vec::with_capacity(k);
let mut lcg = 42u32;
for _ in 0..k {