diff --git a/ws1/README.md b/ws1/README.md
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5d66745655b960df175b630919a3744399dfa6cb 100644
--- a/ws1/README.md
+++ b/ws1/README.md
@@ -0,0 +1,79 @@
+# Task 2 Documentation
+
+## Overview
+
+This document details the creation of an assembly program that prompts the user for their name and the number of times to print a welcome message. The program subsequently validates the input and performs various operations, including summing elements in an array.
+
+## Build Process
+
+### 1. Initial Setup
+
+Initially, I created a directory named `src`, where I stored the necessary files for the project, including:
+- `asm_io.asm`
+- `asm_io.inc`
+- `task2.asm`
+- `driver.c`
+
+Note that from task 1 we were already given the `asm_io.asm` & `asm_io.inc` & `driver.c` so it is just making the new assembler langauage work with the rest of the files already presented. 
+
+### 2. Requirements
+
+The assembly program is designed to accomplish the following objectives:
+
+1. Request the user's name.
+2. Ask for a number to specify how many times the welcome message should be printed, ensuring it falls between 50 and 100.
+3. Print the welcome message the designated number of times.
+4. Define and initialise an array of 100 integers with values from 1 to 100.
+5. Calculate and display the total sum of the array's elements.
+6. Prompt the user for a valid range (start and end) to sum the elements within the array.
+
+### 2. Now the fun bit...(not) coding !!
+
+### Task 2: Extending the Functionality
+
+In `task2.asm`, I incorporated loops, conditionals, and array operations as outlined in the PC Assembly Language book. The program now prompts the user for their name and the number of times to print a welcome message, validating that the input number is within the specified range.
+
+### Key parts of the task
+
+- **Welcome Message Programme**: 
+  The program prompts for the user’s name and counts how many times to print the welcome message.
+
+   ```asm
+    welcome_msg db "Hello Thanks for playing - may the odds ever be in your favour, ", 0 ; Welcome message string
+    prompt_name db "Please enter your Name (mine is Bob): ", 0 ; Prompt message for entering name
+    prompt_count db "Enter number of times to print (between 50 and 100): ", 0 ; Prompt for number of repetitions
+
+- **How to Handle Errors**:
+After prompting the user for the number of times to print the welcome message, the program should check if the input is within the specified range (50–100). If the input is invalid (less than 50 or greater than 100), the program should print an error message and return or exit instead of proceeding.
+
+  ```asm
+  ; --- Validating count ---
+  mov eax, [count] ; Move count into EAX for validation
+  cmp eax, 50 ; Compare count with 50
+  jl display_error ; Jump to error if less than 50
+  cmp eax, 100 ; Compare count with 100
+  jg display_error ; Jump to error if greater than 100
+
+- **Array Summing Programme**:
+  - Defined an array of 100 elements initialised with values from 1 to 100.
+  - Calculated and displayed the total sum of the array.
+
+- **Range-Specific Sum**: 
+  Extended the functionality to ask the user for a start and end range. The program validates the range before summing the elements within those limits and outputs the result.
+
+
+#### Task 3: Setting Up the Program
+
+Based on the assembly build process from Task1, I updated this to include task 2 - from here i was then able to create a make file to create all of the task using one commnd make
+
+To build the initial assembly project (`task2`), I used the following commands:
+
+```bash
+nasm -f elf task2.asm -o task2.o              # Assemble the assembly file
+nasm -f elf asm_io.asm -o asm_io.o            # Assemble the I/O library
+gcc -m32 -c driver.c -o driver.o              # Compile the C driver
+gcc -m32 driver.o task2.o asm_io.o -o task2   # Link to create the executable
+
+Because this is then set up to be able to run the command task2 we now use the command 
+```bash
+./task2
\ No newline at end of file
diff --git a/ws1/src/task2.asm b/ws1/src/task2.asm
deleted file mode 100644
index 612195cd33224be6ba9bf072e54f9762cb396dc5..0000000000000000000000000000000000000000
--- a/ws1/src/task2.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-%include "asm_io.inc"
-
-section .bss
-    name resb 50                  ; Reserve space for the name (max 50 characters)
-    count resb 4                  ; Space to store the count (4 bytes)
-
-section .text
-    global _start
-
-_start:
-    ; Prompt for name
-    mov eax, 4                    ; syscall: sys_write
-    mov ebx, 1                    ; file descriptor: stdout
-    mov ecx, promptName           ; message: "Enter your name: "
-    mov edx, promptNameLen        ; message length
-    int 0x80                      ; call kernel
-
-    ; Read name from user
-    mov eax, 3                    ; syscall: sys_read
-    mov ebx, 0                    ; file descriptor: stdin
-    mov ecx, name                 ; buffer
-    mov edx, 50                   ; number of bytes to read
-    int 0x80                      ; call kernel
-
-    ; Prompt for number of times to print welcome message
-    mov eax, 4                    ; syscall: sys_write
-    mov ebx, 1                    ; file descriptor: stdout
-    mov ecx, promptCount          ; message: "Enter number of times (51-99): "
-    mov edx, promptCountLen       ; message length
-    int 0x80                      ; call kernel
-
-    ; Read number of times from user (buffer for 4 bytes)
-    mov eax, 3                    ; syscall: sys_read
-    mov ebx, 0                    ; file descriptor: stdin
-    mov ecx, count                ; buffer
-    mov edx, 4                    ; number of bytes to read
-    int 0x80                      ; call kernel
-
-    ; Convert input string to integer (assumes input is in ASCII)
-    mov eax, [count]              ; get input value (in ASCII)
-    sub eax, '0'                  ; convert ASCII to integer (this setup assumes single digit input)
-
-    ; Validate the input
-    cmp eax, 51
-    jl print_error                ; If less than 51, jump to error
-    cmp eax, 99
-    jg print_error                ; If greater than 99, jump to error
-
-    ; Repeat welcome message
-    mov ebx, eax                  ; Store the count in EBX for the loop
-print_welcome:
-    mov eax, 4                    ; syscall: sys_write
-    mov ecx, welcomeMsg           ; message: "Welcome to the program!"
-    mov edx, welcomeMsgLen        ; message length
-    int 0x80                      ; call kernel
-
-    dec ebx                        ; Decrement the counter
-    jnz print_welcome             ; Loop until counter is zero
-
-    ; Exit program
-    mov eax, 1                    ; syscall: sys_exit
-    xor ebx, ebx                  ; status: 0
-    int 0x80                      ; call kernel
-
-print_error:
-    ; Print error message
-    mov eax, 4                    ; syscall: sys_write
-    mov ebx, 1                    ; file descriptor: stdout
-    mov ecx, errorMsg             ; message: "Error: Number must be between 51 and 99"
-    mov edx, errorMsgLen          ; message length
-    int 0x80                      ; call kernel
-
-    ; Exit program
-    mov eax, 1                    ; syscall: sys_exit
-    xor ebx, ebx                  ; status: 0
-    int 0x80                      ; call kernel
-
-section .data
-    promptName db "Enter your name: ", 0
-    promptNameLen equ $ - promptName
-    promptCount db "Enter number of times (51-99): ", 0
-    promptCountLen equ $ - promptCount
-    welcomeMsg db "Welcome to the program!", 10
-    welcomeMsgLen equ $ - welcomeMsg
-    errorMsg db "Error: Number must be between 51 and 99", 10
-    errorMsgLen equ $ - errorMsg
diff --git a/ws1/src/task2_test/asm_io.asm b/ws1/src/task2/asm_io.asm
similarity index 100%
rename from ws1/src/task2_test/asm_io.asm
rename to ws1/src/task2/asm_io.asm
diff --git a/ws1/src/task2_test/asm_io.inc b/ws1/src/task2/asm_io.inc
similarity index 100%
rename from ws1/src/task2_test/asm_io.inc
rename to ws1/src/task2/asm_io.inc
diff --git a/ws1/src/task2/asm_io.o b/ws1/src/task2/asm_io.o
new file mode 100644
index 0000000000000000000000000000000000000000..d2921f0c774600089db73d581638199c58d10228
Binary files /dev/null and b/ws1/src/task2/asm_io.o differ
diff --git a/ws1/src/task2/driver.c b/ws1/src/task2/driver.c
new file mode 100644
index 0000000000000000000000000000000000000000..87c08b26eabfceab78fd651553ee397641f5a210
--- /dev/null
+++ b/ws1/src/task2/driver.c
@@ -0,0 +1,7 @@
+extern int asm_main(void);  // Declare the asm_main function
+
+int main() {
+    int ret_status;
+    ret_status = asm_main();  // Call the assembly function
+    return ret_status;        // Return its status
+}
diff --git a/ws1/src/task2/driver.o b/ws1/src/task2/driver.o
new file mode 100644
index 0000000000000000000000000000000000000000..d9c964d5c502ff05525b278dcc90cc8150982da0
Binary files /dev/null and b/ws1/src/task2/driver.o differ
diff --git a/ws1/src/task2/task2 b/ws1/src/task2/task2
new file mode 100755
index 0000000000000000000000000000000000000000..65be89037b0674a5f9b025f087ea54389d2bc985
Binary files /dev/null and b/ws1/src/task2/task2 differ
diff --git a/ws1/src/task2_test/task2.asm b/ws1/src/task2/task2.asm
similarity index 100%
rename from ws1/src/task2_test/task2.asm
rename to ws1/src/task2/task2.asm
diff --git a/ws1/src/task2/task2.o b/ws1/src/task2/task2.o
new file mode 100644
index 0000000000000000000000000000000000000000..a81999e9eadc9848be5a1526d505734e202fe034
Binary files /dev/null and b/ws1/src/task2/task2.o differ
diff --git a/ws1/src/task2_test/driver.c b/ws1/src/task2_test/driver.c
deleted file mode 100644
index 1c33ae595b144ddd1cd11b95bf6a6fc53989d4fc..0000000000000000000000000000000000000000
--- a/ws1/src/task2_test/driver.c
+++ /dev/null
@@ -1,6 +0,0 @@
-int __attribute__((cdecl)) asm_main( void );
-int main() {
-int ret_status;
-ret_status = asm_main();
-return ret_status;
-}
\ No newline at end of file
diff --git a/ws1/test.md b/ws1/test.md
deleted file mode 100644
index fb1e623946b606421338cfc5ee815d6e7cd25f67..0000000000000000000000000000000000000000
--- a/ws1/test.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# test
-## test
-### test
\ No newline at end of file