diff --git a/Final/.gitkeep b/Worksheet1/.gitkeep
similarity index 100%
rename from Final/.gitkeep
rename to Worksheet1/.gitkeep
diff --git a/Final/Task1/.gitkeep b/Worksheet1/Task1/.gitkeep
similarity index 100%
rename from Final/Task1/.gitkeep
rename to Worksheet1/Task1/.gitkeep
diff --git a/Final/Task1/filetest_string.cpp b/Worksheet1/Task1/filetest_string.cpp
similarity index 100%
rename from Final/Task1/filetest_string.cpp
rename to Worksheet1/Task1/filetest_string.cpp
diff --git a/Final/Task1/my_string.cpp b/Worksheet1/Task1/my_string.cpp
similarity index 100%
rename from Final/Task1/my_string.cpp
rename to Worksheet1/Task1/my_string.cpp
diff --git a/Final/Task1/my_string.hpp b/Worksheet1/Task1/my_string.hpp
similarity index 100%
rename from Final/Task1/my_string.hpp
rename to Worksheet1/Task1/my_string.hpp
diff --git a/Final/Task2/.gitkeep b/Worksheet1/Task2/.gitkeep
similarity index 100%
rename from Final/Task2/.gitkeep
rename to Worksheet1/Task2/.gitkeep
diff --git a/Final/Task2/filetest_string.cpp b/Worksheet1/Task2/filetest_string.cpp
similarity index 100%
rename from Final/Task2/filetest_string.cpp
rename to Worksheet1/Task2/filetest_string.cpp
diff --git a/Final/Task2/my_string.cpp b/Worksheet1/Task2/my_string.cpp
similarity index 100%
rename from Final/Task2/my_string.cpp
rename to Worksheet1/Task2/my_string.cpp
diff --git a/Final/Task2/my_string.hpp b/Worksheet1/Task2/my_string.hpp
similarity index 100%
rename from Final/Task2/my_string.hpp
rename to Worksheet1/Task2/my_string.hpp
diff --git a/Final/Task3/.gitkeep b/Worksheet1/Task3/.gitkeep
similarity index 100%
rename from Final/Task3/.gitkeep
rename to Worksheet1/Task3/.gitkeep
diff --git a/Final/Task3/filetest_string.cpp b/Worksheet1/Task3/filetest_string.cpp
similarity index 100%
rename from Final/Task3/filetest_string.cpp
rename to Worksheet1/Task3/filetest_string.cpp
diff --git a/Final/Task3/my_string.cpp b/Worksheet1/Task3/my_string.cpp
similarity index 100%
rename from Final/Task3/my_string.cpp
rename to Worksheet1/Task3/my_string.cpp
diff --git a/Final/Task3/my_string.hpp b/Worksheet1/Task3/my_string.hpp
similarity index 100%
rename from Final/Task3/my_string.hpp
rename to Worksheet1/Task3/my_string.hpp
diff --git a/Final/Task4/.gitkeep b/Worksheet1/Task4/.gitkeep
similarity index 100%
rename from Final/Task4/.gitkeep
rename to Worksheet1/Task4/.gitkeep
diff --git a/Final/Task4/filetest_string.cpp b/Worksheet1/Task4/filetest_string.cpp
similarity index 100%
rename from Final/Task4/filetest_string.cpp
rename to Worksheet1/Task4/filetest_string.cpp
diff --git a/Final/Task4/my_string.cpp b/Worksheet1/Task4/my_string.cpp
similarity index 100%
rename from Final/Task4/my_string.cpp
rename to Worksheet1/Task4/my_string.cpp
diff --git a/Final/Task4/my_string.hpp b/Worksheet1/Task4/my_string.hpp
similarity index 100%
rename from Final/Task4/my_string.hpp
rename to Worksheet1/Task4/my_string.hpp
diff --git a/Final/Task4/refcount.hpp b/Worksheet1/Task4/refcount.hpp
similarity index 100%
rename from Final/Task4/refcount.hpp
rename to Worksheet1/Task4/refcount.hpp
diff --git a/readme.md b/Worksheet1/readme.md
similarity index 100%
rename from readme.md
rename to Worksheet1/readme.md
diff --git a/Worksheet2/readme.md b/Worksheet2/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..46a22343e53999c08eccdbd76c2d4f1dcaef6ca7
--- /dev/null
+++ b/Worksheet2/readme.md
@@ -0,0 +1,99 @@
+James Tulloch - Student No: 21032766 
+
+# **README** 
+
+## *Task 1*
+
+*Implement a class which prints the following output.*
+
+**Output:**
+
+> Hello world - String S is constructed and printed. \
+> Hello world - New scope, T is asssigned as an object which is a copy of S.\
+> Hello world - Prints the content of S again.\
+> e - Gets the char at the index of [1] in S, which is 'e'. \
+> Hello world - Prints the contents of S again.\
+> Hello world - Prints the contents of T again.\
+> HEllo world - S is modified so that the char at the index of [1] is now 'E'.
+
+
+> [!To run this file:]
+> clang++ filetest_string.cpp my_string.cpp
+> ./a.out
+
+**Description:** 
+
+The class my_string is correctly implemented and prints the ouput specified. It does so through using constructors, copy constructors and a destructor. It also has the functions get and set char, for the 4th line of output 'e' and the 7th line, where "Hello" is changed to be "HEllo" 
+
+## *Task 2* 
+
+*Extend the programme to support automatic reference counting.*
+
+**Output:**
+
+>Hello world [1] - *One instance of S exists, reference count is 1.* \
+>Hello world [2] - *Two references of S now exist, with T being a \copy of S. The reference count is now 2.* \
+>Hello world [2] - *S is printed, there are still two objects which refer to the contents of S.* \
+>e - *No reference is printed because a specific index of s, [1], is being called instead of the object.* \
+>Hello world [2] - *S is printed again, the objects refering to its content are still 2. \* 
+>Hello world [2]- T is printed again, the the objects refering to the content of S are still 2.  
+>HEllo world [1] - T is now out of scope, and S[1] is modified to be 'E' instead of 'e'. There is now only one reference to the contents  of S. 
+
+> [!To run this file:]
+> clang++ filetest_string.cpp my_string.cpp
+> ./a.out
+
+**Description:**
+
+The reference counting is implemented in the my_string class, with a pointer called "reference_count".  This pointer keeps track of how many instances of the object are in existence, when they are constructed or destroyed.
+
+## *Task 3*
+
+*Extend the programme to demonstrate a reference count of 0.*
+
+**Output:**
+
+>Hello world [1] \
+>Hello world [2] \
+>Hello world [2] \
+>e \ 
+>Hello world [2] \ 
+>Hello world [2] \
+>HEllo world [1] \
+>Reference count is now 0, freeing memory. - *Once the final object of S is destroyed, the memory is freed using 'nullptr', setting its value to 0.* 
+
+
+> [!To run this file:]
+> 
+> clang++ -o task3 filetest_string.cpp my_string.cpp
+> 
+> ./task3
+
+**Description:**
+
+The implementation deletes the pointer to the reference count using "nullptr" when the destructor is called. This returns the memory used to null or 0. 
+
+## *Task 4* 
+
+Extend the example so reference counting is in a template rather than the "my_string" class. 
+
+**Output:**
+
+>Hello world [1] \
+>Hello world [2] \
+>Hello world [2] \
+>e \ 
+>Hello world [2] \
+>Hello world [2] \
+>HEllo world [2] - *The output is the same as task 2, despite the template being called and instead of using "ref_count" from within the class.* \
+
+
+> [!To run this file:]
+> clang++ -o task4 filetest_string.cpp my_string.cpp
+> 
+> ./task4
+
+**Description:**
+
+The class RefCount is implemented in the header file refcount.hpp. This file contains the functionality of task 3's "refcount" implementation inside of the "my_string" class and creates it as a template. 
+