diff --git a/tech_docs/coding.md b/tech_docs/coding.md
index 6c984ef..9c7259a 100644
--- a/tech_docs/coding.md
+++ b/tech_docs/coding.md
@@ -1,3 +1,174 @@
+Certainly! Let's expand on the programming paradigms with more accurate examples and coverage, focusing on real-world applications and scenarios.
+
+### 1. **Procedural Programming**
+**Characteristics:**
+- Linear, step-by-step approach.
+- Focuses on procedures or routines to manipulate data.
+- Emphasizes a clear sequence of instructions.
+
+**Examples and Real-World Applications:**
+- **Scripting and Automation:** Writing shell scripts or Python scripts to automate system tasks. Example: A bash script to backup files.
+ ```bash
+ #!/bin/bash
+ tar -czf backup.tar.gz /path/to/directory
+ ```
+- **Data Processing:** Writing a Python script to process a CSV file.
+ ```python
+ import csv
+
+ with open('data.csv', mode='r') as file:
+ csv_reader = csv.reader(file)
+ for row in csv_reader:
+ print(row)
+ ```
+
+**Coverage of Approach:**
+- Suitable for small to medium-sized programs.
+- Ideal for tasks that require a clear and linear sequence of operations.
+- Easy to debug due to its straightforward nature.
+
+### 2. **Object-Oriented Programming (OOP)**
+**Characteristics:**
+- Organizes code into objects and classes.
+- Encapsulation, inheritance, and polymorphism are key principles.
+- Promotes code reuse and modularity.
+
+**Examples and Real-World Applications:**
+- **Web Development:** Using Django (Python) or Spring (Java) for building web applications.
+ ```python
+ # Django example
+ from django.db import models
+
+ class Blog(models.Model):
+ title = models.CharField(max_length=100)
+ content = models.TextField()
+ ```
+- **Game Development:** Using Unity (C#) to create game objects and behaviors.
+ ```csharp
+ public class Player : MonoBehaviour
+ {
+ public float speed;
+
+ void Update()
+ {
+ float move = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
+ transform.Translate(move, 0, 0);
+ }
+ }
+ ```
+
+**Coverage of Approach:**
+- Suitable for large-scale applications.
+- Ideal for projects that require high modularity and code reuse.
+- Facilitates the management of complex systems.
+
+### 3. **Functional Programming**
+**Characteristics:**
+- Emphasizes immutability and pure functions.
+- Avoids side effects and mutable state.
+- Utilizes higher-order functions and function composition.
+
+**Examples and Real-World Applications:**
+- **Data Analysis and Processing:** Using functional programming in Python with libraries like pandas.
+ ```python
+ import pandas as pd
+
+ df = pd.read_csv('data.csv')
+ df = df[df['age'] > 18] # Filter adults
+ df['income'] = df['income'] * 1.1 # Adjust income
+ ```
+- **Concurrency and Parallelism:** Using Scala's Akka framework for building concurrent applications.
+ ```scala
+ // Akka example
+ import akka.actor._
+
+ class MyActor extends Actor {
+ def receive = {
+ case "hello" => sender() ! "Hello back to you"
+ }
+ }
+
+ val system = ActorSystem("MySystem")
+ val myActor = system.actorOf(Props[MyActor], name = "myactor")
+ myActor ! "hello"
+ ```
+
+**Coverage of Approach:**
+- Suitable for applications requiring high-level abstractions and immutability.
+- Ideal for concurrent and parallel processing.
+- Enhances code reliability and ease of reasoning.
+
+### 4. **Event-Driven Programming**
+**Characteristics:**
+- Responds to events or changes in state.
+- Common in GUI applications and real-time systems.
+- Focuses on event handlers and callbacks.
+
+**Examples and Real-World Applications:**
+- **GUI Development:** Using JavaScript with HTML for interactive web applications.
+ ```html
+
+
+
+
+ ```
+- **IoT Applications:** Using Node.js to handle events from IoT devices.
+ ```javascript
+ // Node.js example
+ const EventEmitter = require('events');
+ const myEmitter = new EventEmitter();
+
+ myEmitter.on('event', () => {
+ console.log('An event occurred!');
+ });
+
+ myEmitter.emit('event');
+ ```
+
+**Coverage of Approach:**
+- Suitable for interactive and real-time applications.
+- Ideal for systems that need to handle asynchronous events.
+- Can be complex to manage due to event chains and callbacks.
+
+### 5. **Logic Programming**
+**Characteristics:**
+- Based on formal logic and rules.
+- Focuses on defining relationships and constraints.
+- Uses a declarative approach.
+
+**Examples and Real-World Applications:**
+- **Artificial Intelligence:** Using Prolog for expert systems and rule-based reasoning.
+ ```prolog
+ % Prolog example
+ likes(mary, pizza).
+ likes(john, pizza).
+ likes(mary, pasta).
+
+ friends(X, Y) :- likes(X, Z), likes(Y, Z).
+ ```
+
+**Coverage of Approach:**
+- Suitable for applications involving complex problem-solving and constraints.
+- Ideal for AI, theorem proving, and knowledge representation.
+- Limited applicability outside specialized domains.
+
+### Choosing the Best Paradigm for You
+Based on your troubleshooting style and project preferences, you might find the following paradigms most beneficial:
+
+1. **Object-Oriented Programming (OOP):** For complex, modular projects where you can benefit from code reuse and encapsulation.
+2. **Procedural Programming:** For straightforward, linear tasks and automation scripts.
+3. **Functional Programming:** To enhance your problem-solving toolkit with immutability and higher-order functions, especially useful for data processing and concurrent tasks.
+4. **Event-Driven Programming:** For building interactive applications, particularly if you work with real-time data or GUIs.
+5. **Logic Programming:** For specialized projects requiring rule-based reasoning and complex constraints.
+
+By exploring these paradigms, you can better align your programming approach with your troubleshooting style and project requirements.
+
+---
+
Great! Let's refactor the example using the bookshelf analogy instead of the car example. Here's the revised version: