diff --git a/src/pvv/side/repeatingactivity.php b/src/pvv/side/repeatingactivity.php
index 9ad3e7c..9bcda82 100644
--- a/src/pvv/side/repeatingactivity.php
+++ b/src/pvv/side/repeatingactivity.php
@@ -1,12 +1,12 @@
 <?php //declare(strict_types=1);
 namespace pvv\side;
 
-use \DateTime;
+use \DateTimeImmutable;
 
 interface RepeatingActivity extends Activity {
 
-	public function getNextEventFrom(DateTime $date) /* : Event */;
+	public function getNextEventFrom(DateTimeImmutable $date) /* : Event */;
 
-	public function getPreviousEventFrom(DateTime $date) /* : Event */;
+	public function getPreviousEventFrom(DateTimeImmutable $date) /* : Event */;
 
 }
diff --git a/src/pvv/side/social/animekveldactivity.php b/src/pvv/side/social/animekveldactivity.php
new file mode 100644
index 0000000..018512a
--- /dev/null
+++ b/src/pvv/side/social/animekveldactivity.php
@@ -0,0 +1,47 @@
+<?php //declare(strict_types=1);
+namespace pvv\side\social;
+
+use \DateTimeImmutable;
+use \DateInterval;
+
+class AnimekveldActivity  {
+
+	public function nextDate(DateTimeImmutable $date) {
+		if ($date->format('H') > 20 || $date->format('H') == 19 && $date->format('i') > 30)
+			return $this->nextDate($date->add(new DateInterval('P1D')));
+		$date = $date->setTime(19, 30, 0);
+		if ($date->format('N') != 5)
+			return $this->nextDate($date->add(new DateInterval('P1D')));
+		return $date;
+	}
+
+	public function prevDate(DateTimeImmutable $date) {
+		if ($date->format('H') < 19 || $date->format('H') == 20 && $date->format('i') < 30)
+			return $this->prevDate($date->sub(new DateInterval('P1D')));
+		$date = $date->setTime(19, 30, 0);
+		if ($date->format('N') != 5)
+			return $this->prevDate($date->sub(new DateInterval('P1D')));
+		return $date;
+	}
+
+	public function getNextEventFrom(DateTimeImmutable $date) /* : Event */ {
+		return new AnimekveldEvent($this->nextDate($date));
+	}
+
+	public function getPreviousEventFrom(DateTimeImmutable $date) /* : Event */ {
+		return new AnimekveldEvent($this->prevDate($date));
+	}
+
+	public function getName() /* : string */ {
+		return "Animekveld";
+	}
+
+	public function getLocation() /* : Location */ {
+		return "Peppes Kjøpmansgata";
+	}
+
+	public function getOrganiser() /* : User */ {
+		return "Anders Christensen";
+	}
+
+}
diff --git a/src/pvv/side/social/nerdepitsaactivity.php b/src/pvv/side/social/nerdepitsaactivity.php
new file mode 100644
index 0000000..4984d96
--- /dev/null
+++ b/src/pvv/side/social/nerdepitsaactivity.php
@@ -0,0 +1,52 @@
+<?php //declare(strict_types=1);
+namespace pvv\side\social;
+
+use \pvv\side\RepeatingActivity;
+use \DateTimeImmutable;
+use \DateInterval;
+
+class NerdepitsaActivity implements RepeatingActivity {
+
+	public function nextDate(DateTimeImmutable $date) {
+		if ($date->format('H') > 19)
+			return $this->nextDate($date->add(new DateInterval('P1D'))->setTime(19, 0, 0));
+		$date = $date->setTime(19, 0, 0);
+		if ($date->format('N') != 5)
+			return $this->nextDate($date->add(new DateInterval('P1D')));
+		if ($date->format('W') % 2)
+			return $this->nextDate($date->add(new DateInterval('P7D')));
+		return $date;
+	}
+
+	public function prevDate(DateTimeImmutable $date) {
+		if ($date->format('H') < 19)
+			return $this->prevDate($date->sub(new DateInterval('P1D'))->setTime(19, 0, 0));
+		$date = $date->setTime(19, 0, 0);
+		if ($date->format('N') != 5)
+			return $this->prevDate($date->sub(new DateInterval('P1D')));
+		if ($date->format('W') % 2)
+			return $this->prevDate($date->sub(new DateInterval('P7D')));
+		return $date;
+	}
+
+	public function getNextEventFrom(DateTimeImmutable $date) /* : Event */ {
+		return new NerdepitsaEvent($this->nextDate($date));
+	}
+
+	public function getPreviousEventFrom(DateTimeImmutable $date) /* : Event */ {
+		return new NerdepitsaEvent($this->prevDate($date));
+	}
+
+	public function getName() /* : string */ {
+		return "Nerdepitsa";
+	}
+
+	public function getLocation() /* : Location */ {
+		return "Peppes Kjøpmansgata";
+	}
+
+	public function getOrganiser() /* : User */ {
+		return "Anders Christensen";
+	}
+
+}
diff --git a/src/pvv/side/social/testanimekveld.php b/src/pvv/side/social/testanimekveld.php
new file mode 100644
index 0000000..86fed78
--- /dev/null
+++ b/src/pvv/side/social/testanimekveld.php
@@ -0,0 +1,9 @@
+<?php //declare(strict_types=1);
+namespace pvv\side\social;
+
+ini_set('date.timezone', 'Europe/Oslo');
+
+require implode(DIRECTORY_SEPARATOR, [dirname(dirname(dirname(__DIR__))), '', '_autoload.php']);
+
+$c = new AnimekveldActivity;
+die($c->nextDate(new \DateTimeImmutable)->format(DATE_RFC2822));
diff --git a/src/pvv/side/social/testnerdepitsa.php b/src/pvv/side/social/testnerdepitsa.php
new file mode 100644
index 0000000..22f385c
--- /dev/null
+++ b/src/pvv/side/social/testnerdepitsa.php
@@ -0,0 +1,9 @@
+<?php //declare(strict_types=1);
+namespace pvv\side\social;
+
+ini_set('date.timezone', 'Europe/Oslo');
+
+require implode(DIRECTORY_SEPARATOR, [dirname(dirname(dirname(__DIR__))), '', '_autoload.php']);
+
+$c = new NerdepitsaActivity;
+die($c->prevDate(new \DateTimeImmutable)->format(DATE_RFC2822));