diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7149a5b09b3dabcd4f0964bc9bf4b1cb5e89c48b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+main
+go*
+*.pb.go
+.DS_Store
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000000000000000000000000000000000000..608d3c69953ad81b013aa68bad9facca7b8a8cf3
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,15 @@
+{
+    // Use IntelliSense to learn about possible attributes.
+    // Hover to view descriptions of existing attributes.
+    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Launch Package",
+            "type": "go",
+            "request": "launch",
+            "mode": "auto",
+            "program": "${fileDirname}"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/go.work b/go.work
new file mode 100644
index 0000000000000000000000000000000000000000..6dc2b0fcab14d35698f7032152b548611decfa61
--- /dev/null
+++ b/go.work
@@ -0,0 +1,14 @@
+go 1.20
+
+use ./src/gocat
+use ./src/gofabric
+use ./src/gojoke
+use ./src/gomd5
+use ./src/gopalindrome
+use ./src/gopraha
+use ./src/goproxy
+use ./src/gouni
+use ./src/gourl
+use ./src/hello-grpc/client
+use ./src/hello-grpc/server
+use ./src/hello-kafka
diff --git a/src/gocat/go.mod b/src/gocat/go.mod
index f568a49ccdf20c6bcba430255fe2c61378d2793f..07e81233107412a98a7a1084b6ec0e62520bd6fe 100644
--- a/src/gocat/go.mod
+++ b/src/gocat/go.mod
@@ -1,3 +1,3 @@
 module github.com/turngeek/examples-go/src/gocat
 
-go 1.16
+go 1.20
diff --git a/src/gofabric/go.mod b/src/gofabric/go.mod
new file mode 100644
index 0000000000000000000000000000000000000000..008a39d2350fad939d9065b22a6161fab26eb62e
--- /dev/null
+++ b/src/gofabric/go.mod
@@ -0,0 +1,3 @@
+module github.com/turngeek/examples-go/src/gofabric
+
+go 1.20
diff --git a/src/gojoke/go.mod b/src/gojoke/go.mod
index c2acb831a0b8ddf7526392ebff65c753f0de7c3a..15cf8b0f071c30b9faa7e131dfc3e1b7fb198397 100644
--- a/src/gojoke/go.mod
+++ b/src/gojoke/go.mod
@@ -1,3 +1,3 @@
 module github.com/turngeek/examples-go/src/gojoke
 
-go 1.16
+go 1.20
diff --git a/src/gopalindrome/go.mod b/src/gopalindrome/go.mod
index 9c4e00ebae04f0ea20dd0aa4660d81576226b06a..4cfd63d02ad67d1cf0cd8993a269e7565e30acd5 100644
--- a/src/gopalindrome/go.mod
+++ b/src/gopalindrome/go.mod
@@ -1,3 +1,3 @@
 module github.com/turngeek/examples-go/src/gopalindrome
 
-go 1.16
+go 1.20
diff --git a/src/gopraha/go.mod b/src/gopraha/go.mod
index e66ba3b0c50e625cfba73f89bfc8f9288c1dae2f..49cbd823e4608c039d2e6e41431dd739871d8846 100644
--- a/src/gopraha/go.mod
+++ b/src/gopraha/go.mod
@@ -1,5 +1,5 @@
 module github.com/turngeek/examples-go/src/gopraha
 
-go 1.16
+go 1.20
 
 require github.com/segmentio/kafka-go v0.4.16 // indirect
diff --git a/src/goproxy/go.mod b/src/goproxy/go.mod
index e1d9074e7f6952566ec40db02e9a026db4f512fa..d57f002c420ea68b23753f4e1e22d74fcefff6d0 100644
--- a/src/goproxy/go.mod
+++ b/src/goproxy/go.mod
@@ -1,5 +1,5 @@
 module github.com/turngeek/examples-go/src/goproxy
 
-go 1.16
+go 1.20
 
 require github.com/gorilla/mux v1.8.0 // indirect
diff --git a/src/gouni/go.mod b/src/gouni/go.mod
index 9e6a1cb58e9f727adddbe4962a31e50cb3462ed2..1eec53c2bea26afc24fb2a616490e52af85f2f21 100644
--- a/src/gouni/go.mod
+++ b/src/gouni/go.mod
@@ -1,3 +1,3 @@
 module github.com/turngeek/examples-go/src/gouni
 
-go 1.16
+go 1.20
diff --git a/src/gourl/go.mod b/src/gourl/go.mod
index 6ff37237127ca7b6d95b4850376bb8b662def4ad..582a28f55d9b28050ff2af37eea1280caf144b4a 100644
--- a/src/gourl/go.mod
+++ b/src/gourl/go.mod
@@ -1,3 +1,3 @@
 module github.com/turngeek/examples-go/src/gourl
 
-go 1.16
+go 1.20
diff --git a/src/hello-grpc/client/go.mod b/src/hello-grpc/client/go.mod
index fc9a44b2ee1d64cce995b3f38f0929368aa35d72..9041f2c02c3e4480e58ac0737580919708742eeb 100644
--- a/src/hello-grpc/client/go.mod
+++ b/src/hello-grpc/client/go.mod
@@ -1,6 +1,6 @@
 module github.com/turngeek/examples-go/src/hello-grpc/client
 
-go 1.16
+go 1.20
 
 require (
 	golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect
diff --git a/src/hello-grpc/server/go.mod b/src/hello-grpc/server/go.mod
index a2b01a2f8a285ecc8a739a10252704f98c9f0f0c..df0828bbe5b907144d15c9027a6f0d56901534e3 100644
--- a/src/hello-grpc/server/go.mod
+++ b/src/hello-grpc/server/go.mod
@@ -1,6 +1,6 @@
 module github.com/turngeek/examples-go/src/hello-grpc/server
 
-go 1.16
+go 1.20
 
 require (
 	golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect
diff --git a/src/hello-kafka/go.mod b/src/hello-kafka/go.mod
index cd9be8dc1a38c6a36596929132b44c8a84e1684d..55f17884d204cd5ad06cd835bee523e6e913f706 100644
--- a/src/hello-kafka/go.mod
+++ b/src/hello-kafka/go.mod
@@ -1,5 +1,5 @@
 module github.com/turngeek/examples-go/src/hello-kafka
 
-go 1.16
+go 1.20
 
 require github.com/segmentio/kafka-go v0.4.16 // indirect