diff --git "a/infobank/Articles/\303\230ving 8.pdf" "b/infobank/Articles/\303\230ving 8.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..405cfd5217645547c70b9e8fc300bb2e34f6dc91
Binary files /dev/null and "b/infobank/Articles/\303\230ving 8.pdf" differ
diff --git a/templates/_folder_Exercises/O08/Car.cpp b/templates/_folder_Exercises/O08/Car.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6443f07ce2cf3040507b3afafef03d4e364eb3a
--- /dev/null
+++ b/templates/_folder_Exercises/O08/Car.cpp
@@ -0,0 +1,11 @@
+#include "Car.h"
+
+#include <cassert>
+
+// BEGIN 1b
+
+// END 1b
+
+// BEGIN 1c
+
+// END 1c
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O08/Car.h b/templates/_folder_Exercises/O08/Car.h
new file mode 100644
index 0000000000000000000000000000000000000000..b46aa81199d4fbdf74980b70ef2b98bf736b7206
--- /dev/null
+++ b/templates/_folder_Exercises/O08/Car.h
@@ -0,0 +1,5 @@
+#pragma once
+
+// BEGIN: 1a
+
+// END: 1a
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O08/Meeting.cpp b/templates/_folder_Exercises/O08/Meeting.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..23c4eecb88c562599716b2df5d178069b9b0d77d
--- /dev/null
+++ b/templates/_folder_Exercises/O08/Meeting.cpp
@@ -0,0 +1,31 @@
+#include "Meeting.h"
+
+#include <iostream>
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+// BEGIN 3b
+
+// END 3b
+
+// BEGIN 3e
+
+// END 3e
+
+// BEGIN 3f
+
+// END 3f
+
+// BEGIN 3h
+
+// END 3h
+
+// BEGIN 3i
+
+// END 3i
+
+// BEGIN 3j
+
+// END 3j
diff --git a/templates/_folder_Exercises/O08/Meeting.h b/templates/_folder_Exercises/O08/Meeting.h
new file mode 100644
index 0000000000000000000000000000000000000000..8237e1301154d610ff3108acf11444f265aec14b
--- /dev/null
+++ b/templates/_folder_Exercises/O08/Meeting.h
@@ -0,0 +1,67 @@
+#pragma once
+
+#include "Person.h"
+
+#include <iostream>
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+#include <unordered_map>
+
+// BEGIN 3a
+enum class Campus {};
+// END 3a
+
+// BEGIN 3b
+
+// END 3b
+
+// FJERN KOMMENTAR NAAR DU SKAL BRUKE
+/*
+const std::unordered_map<Campus, std::string> campusToString {
+	{ Campus::trh, "Trondheim" },
+	{ Campus::aal, "Aalesund" },
+	{ Campus::gjo, "Gjovik"}
+};
+
+const std::unordered_map<std::string, Campus> stringToCampus {
+	{ "Trondheim", Campus::trh },
+	{ "Aalesund", Campus::aal },
+	{ "Gjovik", Campus::gjo }
+};
+*/
+
+class Meeting
+{
+private:
+	// BEGIN 3c
+
+	// END 3c
+public:
+	// BEGIN 3d
+
+	// END 3d
+
+	// BEGIN 3e
+
+	// END 3e
+	
+	Meeting(int day, int startTime, int endTime, Campus location, const std::string& subject, const std::shared_ptr<Person> leader);
+
+	// BEGIN 3h
+
+	// END 3h
+
+	// BEGIN 3i
+
+	// END 3i
+
+	// Vi ønsker ikke å tillate kopiering av Meeting-objekter
+	Meeting(const Meeting&) = delete;
+	Meeting& operator=(const Meeting&) = delete;
+};
+
+// BEGIN 3j
+
+// END 3j
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O08/MeetingWindow.cpp b/templates/_folder_Exercises/O08/MeetingWindow.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..73e6bcc47d36e3c636e90bcd8c753c31e33710ef
--- /dev/null
+++ b/templates/_folder_Exercises/O08/MeetingWindow.cpp
@@ -0,0 +1,61 @@
+#include "MeetingWindow.h"
+#include <iostream>
+
+MeetingWindow::MeetingWindow(TDT4102::Point position, int width, int height, const std::string& title):
+	// BEGIN 4a
+    AnimationWindow{},
+	// END 4a
+
+	// BEGIN 4e
+	
+	// END 4e
+
+	// BEGIN 5a
+	#define FOUR_A
+	// END 5a
+
+	// BEGIN 5b
+	#define FOUR_B
+	// END 5b
+
+	dummyArgument{0}
+{
+	// Felles
+	// BEGIN 4f
+	
+	// END 4f
+	
+	// BEGIN 4g
+	
+	// END 4g
+
+	// BEGIN 5d
+
+	// END 5d
+
+	// Ny person
+	#ifndef FOUR_A
+	attachPersonWidget(personName);
+	attachPersonWidget(personEmail);
+	#endif
+
+	#ifndef FOUR_B
+	attachPersonWidget(personSeats);
+	attachPersonWidget(personNewBtn);
+	#endif
+}
+
+// Callbackfunksjoner
+// BEGIN 4d
+
+// END 4d
+
+// BEGIN 5c
+
+// END 5c
+
+void MeetingWindow::attachPersonWidget(TDT4102::Widget& pw)
+{
+	add(pw);
+	personWidgets.emplace_back(std::ref(pw));
+}
\ No newline at end of file
diff --git a/templates/_folder_Exercises/O08/MeetingWindow.h b/templates/_folder_Exercises/O08/MeetingWindow.h
new file mode 100644
index 0000000000000000000000000000000000000000..e93f6dee42476b1fce97899f63eee23dc2a991fe
--- /dev/null
+++ b/templates/_folder_Exercises/O08/MeetingWindow.h
@@ -0,0 +1,54 @@
+#pragma once
+
+#include "AnimationWindow.h"
+#include "Meeting.h"
+#include "Person.h"
+#include "widgets/Button.h"
+#include "widgets/TextInput.h"
+#include "widgets/DropdownList.h"
+
+#include <string>
+#include <vector>
+#include <functional>
+
+
+// Meeting GUI
+class MeetingWindow : public TDT4102::AnimationWindow
+{
+	public:
+	// BEGIN 4c
+
+	// END 4c
+
+	MeetingWindow(TDT4102::Point position, int width, int height, const std::string& title);
+
+	// Avslutt knapp
+	// BEGIN 4e
+	
+	// END 4e
+
+	// Callback-funksjoner
+	// BEGIN 4d
+
+	// END 4d
+
+	// Person
+	// BEGIN 5a
+
+	// END 5a
+
+	// BEGIN 5b
+
+	// END 5b
+
+	// Personer
+	// BEGIN 5c
+
+	// END 5c
+
+	int dummyArgument;
+
+	// Hjelpefunksjoner og variabler
+	void attachPersonWidget(TDT4102::Widget& pw);
+	std::vector<std::reference_wrapper<TDT4102::Widget>> personWidgets;
+};
diff --git a/templates/_folder_Exercises/O08/Person.cpp b/templates/_folder_Exercises/O08/Person.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2d60bda7ac90c7273ecae6a631cd6460a73f363f
--- /dev/null
+++ b/templates/_folder_Exercises/O08/Person.cpp
@@ -0,0 +1,13 @@
+#include "Person.h"
+
+// BEGIN 2b
+
+// END 2b
+
+// BEGIN 2c
+
+// END 2c
+
+// BEGIN 2d
+
+// END 2d
diff --git a/templates/_folder_Exercises/O08/Person.h b/templates/_folder_Exercises/O08/Person.h
new file mode 100644
index 0000000000000000000000000000000000000000..a633cf678de4bd606e3ca27d2ecabfb584fd87ad
--- /dev/null
+++ b/templates/_folder_Exercises/O08/Person.h
@@ -0,0 +1,30 @@
+#pragma once
+#include "Car.h"
+#include <string>
+#include <iostream>
+#include <memory>
+
+class Person
+{
+public:
+	// BEGIN 2b
+
+	// END 2b
+
+	// BEGIN 2c
+
+	// END 2c
+
+	// BEGIN 2d
+
+	// END 2d
+
+	// Vi onsker ikke å tillate kopiering av Person-objekter
+	Person(const Person&) = delete;
+	Person& operator=(const Person&) = delete;
+
+private:
+	// BEGIN 2a
+
+	// END 2a
+};
diff --git a/templates/_folder_Exercises/O08/main.cpp b/templates/_folder_Exercises/O08/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..84dcc4ce8d848a72b1fcc94752cc99745781e907
--- /dev/null
+++ b/templates/_folder_Exercises/O08/main.cpp
@@ -0,0 +1,10 @@
+#include "Person.h"
+#include "Meeting.h"
+#include "MeetingWindow.h"
+#include <iostream>
+
+int main()
+{
+	// Her kan du teste koden din
+	return 0;
+}