diff --git a/36c3/__init__.py b/36c3/__init__.py
new file mode 100644
index 0000000..b6287b3
--- /dev/null
+++ b/36c3/__init__.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python3
+
+import subprocess
+import os.path
+from renderlib import *
+from easing import *
+import svg.path
+
+
+personmap = {
+}
+
+taglinemap = {
+}
+
+# URL to Schedule-XML
+scheduleUrl = 'https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.xml'
+
+
+def tasks(queue, args, idlist, skiplist):
+ # iterate over all events extracted from the schedule xml-export
+ for event in events(scheduleUrl):
+ if event['room'] not in ('Ada', 'Borg', 'Clarke', 'Dijkstra', 'Eliza'):
+ print("skipping room %s (%s)" % (event['room'], event['title']))
+ continue
+
+ if (event['id'] in idlist or not idlist):
+ # generate a task description and put them into the queue
+ idx=0
+ for idx, person in enumerate(persons(scheduleUrl, personmap, taglinemap, event['id'])):
+ queue.put(Rendertask(
+ infile = 'insert.svg',
+ outfile = 'event_{}_person_{}.png'.format(str(event['id']), str(person['id'])),
+ parameters = {
+ '$person': person['person'],
+ '$tagline': person['tagline'],
+ }
+ ))
+
+ if idx > 0:
+ queue.put(Rendertask(
+ infile = 'insert.svg',
+ outfile = 'event_{}_persons.png'.format(str(event['id'])),
+ parameters = {
+ '$person': event['personnames'],
+ '$tagline': '',
+ }
+ ))
diff --git a/36c3/artwork/bauchbinde_links.svg b/36c3/artwork/bauchbinde_links.svg
new file mode 100644
index 0000000..57cce80
--- /dev/null
+++ b/36c3/artwork/bauchbinde_links.svg
@@ -0,0 +1,516 @@
+
+
+
+
diff --git a/36c3/artwork/bauchbinde_rechts.svg b/36c3/artwork/bauchbinde_rechts.svg
new file mode 100644
index 0000000..0e11b3e
--- /dev/null
+++ b/36c3/artwork/bauchbinde_rechts.svg
@@ -0,0 +1,477 @@
+
+
+
+
diff --git a/36c3/artwork/insert.svg b/36c3/artwork/insert.svg
new file mode 100644
index 0000000..a5abb09
--- /dev/null
+++ b/36c3/artwork/insert.svg
@@ -0,0 +1,516 @@
+
+
+
+