diff --git a/exercise_0305/go.mod b/exercise_0305/go.mod
new file mode 100644
index 0000000000000000000000000000000000000000..aa6483b44092663c5c932904ae72668cbc571cdc
--- /dev/null
+++ b/exercise_0305/go.mod
@@ -0,0 +1,3 @@
+module gitlab.reutlingen-university.de/go-exercises/go-starter/exercise_0305
+
+go 1.20
diff --git a/exercise_0305/main.go b/exercise_0305/main.go
new file mode 100644
index 0000000000000000000000000000000000000000..c15c0c9d2846a46d72e44fe67553836eb837e3cd
--- /dev/null
+++ b/exercise_0305/main.go
@@ -0,0 +1,44 @@
+package main
+
+import "fmt"
+
+type PhoneBook struct {
+	entries map[int]string
+}
+
+func (pb *PhoneBook) AddNumbers(person string, numbers ...int) {
+	for _, number := range numbers {
+		pb.entries[number] = person
+	}
+}
+
+func CreateEmptyPhoneBook() PhoneBook {
+	emptyPB := PhoneBook{
+		entries: make(map[int]string),
+	}
+	return emptyPB
+}
+
+func (pb *PhoneBook) PrintPhoneBook() {
+	for number, person := range pb.entries {
+		fmt.Printf("%s: %d\n", person, number)
+	}
+}
+
+func main() {
+
+	pb := PhoneBook{
+		entries: map[int]string{
+			4711: "Marcus",
+			4712: "Martin",
+		},
+	}
+
+	pb.AddNumbers("Dominik", 4713, 4714)
+	pb.PrintPhoneBook()
+
+	pb2 := CreateEmptyPhoneBook()
+	pb2.AddNumbers("Karlo", 1, 2, 3, 4, 5)
+	pb2.PrintPhoneBook()
+
+}