diff --git a/exercises/exercise3/Exercise2_Description.md b/exercises/exercise3/Exercise2_Description.md
new file mode 100644
index 0000000000000000000000000000000000000000..053e90e6742b3574382e880facc08642ec2c061b
--- /dev/null
+++ b/exercises/exercise3/Exercise2_Description.md
@@ -0,0 +1,26 @@
+# Exercise 3: 
+
+## Due Date: Wednesday, January 19, 2022 11:59 PM
+## Objectives: To get familiar with creating a wrapper for a Rest Client in Go and continue practice with creating a CLI in Go.
+
+## Specifications/Requirements
+In this exercise you will be creating a command line tool that will be our own version of the command line utility curl.  It won't be duplicating all of the functionality of the curl utility, but will implement the following:  
+*   ability to pass in the request type and what endpoint you are going to hit  
+*   print out the results to the user as well as store the results in a log file  
+*   provide the user with usage information on how to use the CLI  
+*   retrieve the contents of the log and display it to the user  
+
+Details:  
+
+1. You are given a go module: __exercise3__. You need to implement your application in 2 files. Inside of __main.go__ you need to implement the interface for your CLI. Your CLI should implement the following flags:  
+    *   request - Http verb (type) for your request. Only need to support GET, POST, PUT and DELETE)  
+    *   endpoint - The url of the endpoint you are trying to hit  
+    *   logs - output the log of all of your session requests  
+    *   additionally your CLI should provide the user Usage information similar to the functionality in exercise 2  
+
+2.  Inside of __client.go__ you will implement all of your http client handlers as well as the persistence of the results of your network calls to a file on your file system. You need to handle the possible errors of any failed network call and store those results as well.
+
+
+To deliver your submission you will need to commit your changes locally and push to your repo on the university gitlab server.  
+__NOTE__: You should not commit any executables or binaries as a result of compiling and building your application. 
+
diff --git a/exercises/exercise3/client.go b/exercises/exercise3/client.go
new file mode 100644
index 0000000000000000000000000000000000000000..cadf9e3610bdb6c58bc995430af7f5969464f4d9
--- /dev/null
+++ b/exercises/exercise3/client.go
@@ -0,0 +1 @@
+package client
\ No newline at end of file
diff --git a/exercises/exercise3/cmd/client/main.go b/exercises/exercise3/cmd/client/main.go
new file mode 100644
index 0000000000000000000000000000000000000000..705834a81dcd7723351985dc16b3817163eb020f
--- /dev/null
+++ b/exercises/exercise3/cmd/client/main.go
@@ -0,0 +1,12 @@
+package main
+
+import (
+  "flag"
+  "fmt"
+  "os"
+
+  "gitlab.cs.umd.edu/arasevic/cmsc398Bwinter2022-student/exercises/exercise3"
+)
+
+// Default file name
+var log = "requestLogs.json"
\ No newline at end of file
diff --git a/exercises/exercise3/go.mod b/exercises/exercise3/go.mod
new file mode 100644
index 0000000000000000000000000000000000000000..a8ddf02a089c2dc6ddf180789137756c2359f92d
--- /dev/null
+++ b/exercises/exercise3/go.mod
@@ -0,0 +1,3 @@
+module gitlab.cs.umd.edu/arasevic/cmsc398Bwinter2022-student/exercises/exercise3
+
+go 1.17