diff --git a/Assignment/Task 2/main.cpp b/Assignment/Task 2/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..311ea457808551a1a5efd2950185d1fb9643aaf0
--- /dev/null
+++ b/Assignment/Task 2/main.cpp	
@@ -0,0 +1,41 @@
+#include <iostream>
+#include "scheduler.h"
+
+scheduler s;
+int shared_data = 10;
+
+void func1(void* arg) {
+    std::cout << "Entering Fiber1" << std::endl;
+    std::cout << "fiber 1 address: " << arg << std::endl;
+    std::cout << "fiber 1: " << shared_data << std::endl;
+    shared_data++;
+    s.fiber_exit(); // Exit the fiber
+    std::cout << "Exit of Fiber1" << std::endl;
+}
+
+void func2(void* arg) {
+    std::cout << "fiber 2 address: " << arg << std::endl;
+    std::cout << "fiber 2: " << shared_data << std::endl;  // This should now print 11
+    s.fiber_exit(); // Exit the fiber
+}
+
+int main() {
+
+    try {
+    std::cout << " Starting funcs" << std::endl;
+    fiber f1(&func1, nullptr);
+    std::cout << "Shared data:" << shared_data << std::endl;
+    std::cout << "Between" << std::endl;
+    fiber f2(&func2, nullptr);
+    std::cout <<"Funcs Done" << std::endl;    
+    s.spawn(&f1);
+    s.spawn(&f2);
+    std::cout <<"Spawning" << std::endl;
+    s.do_it();  // Execute the fibers
+    std::cout << "HELLO" <<std::endl;
+    } catch (const std::exception& e) {
+    std::cerr << "Exception Caught:" <<e.what() <<std::endl;
+    }
+    return 0;
+}
+