diff --git a/README.md b/README.md
index 48cf451f96af00145fed024ae07f88e47537cb95..43ed679137ac1746918a84b4b812dc1443c953d5 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,34 @@
+# Website der Video AG
+
+## Entwicklung
+### Zum Testen:
+Hinweis: diese Variante startet eine lokale Testversion der Website, es sind nicht alle Features verfügbar, z.B. LDAP-Login.
+
+1. Repo Clonen
+2. Verzeichnis betreten
+3. (optional) config.py anpassen
+4. Schauen ob alle Dependencies erfüllt sind (siehe weiter unten)
+5. `./run.py` ausführen
+6. unter [link](http://localhost:5000) ist die Website verfügbar
+7. Moderatorlogin mit user: `videoag` Passwort: `videoag`
+
+### Zum Mitmachen:
+1. Repo zum User clonen, dafür den "Clone-Button auf der Website verwenden
+2. Weiter mit 'Zum Testen'
+3. Änderungen machen
+4. ins eigene Repo pushen
+5. Pull-Request an uns, dazu unter "Merge-Requests" einmal auf "New Merge Request" und das Private Repo auswählen.
+6. Warten
+7. Wir mergen die Änderungen
+
+### Dependencies
+* python
+* flask
+* sqlite
+* lxml (optional, wird für den Campus Import benötigt) 
+
+# Lizenz
+
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License Version 2
 as published by the Free Software Foundation;
@@ -9,4 +40,4 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
\ No newline at end of file
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
diff --git a/server.py b/server.py
index ceccf646e0cae541e75c0d0e9d7c81ec374aa919..9a9a76ce216b2cc17941351e1f2a8467b24c4fe4 100755
--- a/server.py
+++ b/server.py
@@ -192,6 +192,7 @@ def faq():
 	return render_template('faq.html')
 
 @app.route('/play/<int:id>')
+@app.route('/embed/<int:id>', endpoint='embed')
 @handle_errors('course', 'Diese Vorlesung existiert nicht!', 404, IndexError)
 def lecture(id):
 	lectures = query('SELECT * FROM lectures WHERE id = ? AND (? OR visible)', id, ismod())
@@ -202,7 +203,8 @@ def lecture(id):
 	if not courses:
 		return render_endpoint('course', 'Diese Veranstaltung existiert nicht!'), 404
 	chapters = query('SELECT * FROM chapters WHERE lecture_id = ? AND NOT deleted AND (? OR visible) ORDER BY time ASC', id, ismod())
-	return render_template('lecture.html', course=courses[0], lecture=lectures[0], videos=videos, chapters=chapters)
+	return render_template('embed.html' if request.endpoint == 'embed' else 'lecture.html', course=courses[0], lecture=lectures[0], videos=videos, chapters=chapters)
+
 
 @app.route('/search')
 def search():
@@ -395,6 +397,24 @@ def new_featured():
 		return redirect(request.values['ref'])
 	return id,  200
 
+@app.route('/sitemap.xml', methods=['GET'])
+def sitemap():
+	pages=[]
+	# static pages
+	for rule in app.url_map.iter_rules():
+		if 'GET' in rule.methods and len(rule.arguments)==0:
+			if rule.endpoint not in mod_endpoints:
+				pages.append([rule.rule])
+	for i in query('select * from courses where visible and listed'):
+		pages.append([url_for('course',handle=i['handle'])])
+		for j in query('select * from lectures where (course_id = ? and visible)',i['id']):
+			pages.append([url_for('lecture',id=j['id'])])
+
+
+	return Response(render_template('sitemap.xml', pages=pages), 200, {'Content-Type': 'application/atom+xml'} )
+
+
+
 import feeds
 import importer
 import schedule
diff --git a/templates/base.html b/templates/base.html
index 079d5cff5fad096052542bbf37f38665cd30bf41..0fc5647ecd7d915c5cb514410c9177e9d32d1c3a 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -24,6 +24,7 @@
 		{%if ismod() %}<script src="{{url_for('static', filename='moderator.js')}}"></script>{% endif %}
 	</head>
 	<body>
+	{% block navbar %}
 		<nav class="navbar navbar-default navbar-static-top">
 			<div class="container-fluid">
 				<div class="row">
@@ -98,6 +99,7 @@
 				</div>
 			</div>
 		</nav>
+		{% endblock %}
 		<div class="container-fluid">
 			<div class="row">
 				{% if page_border == 0 %}
@@ -127,8 +129,6 @@
 					</div>
 					{% endfor %}
 					{% block content %}
-					<h1>This is a Heading</h1>
-					<p>This is a paragraph.</p>
 					{% endblock %}
 				</div>
 			</div>
diff --git a/templates/embed.html b/templates/embed.html
new file mode 100644
index 0000000000000000000000000000000000000000..2aca631f7574714ec41f3b49429aebb94df98d57
--- /dev/null
+++ b/templates/embed.html
@@ -0,0 +1,16 @@
+{% from 'macros.html' import player %}
+{% from 'macros.html' import video_download_btn %}
+{% from 'macros.html' import video_embed_btn %}
+{% set page_border = 0 -%}
+
+{% extends "base.html" %}
+{% block navbar %}
+{% endblock %}
+{% block content %}
+<div class="row">
+	<div class="col-xs-12" style="padding: 0px">
+		{{ player(lecture, videos) }}
+	</div>
+</div>
+
+{% endblock %}
diff --git a/templates/macros.html b/templates/macros.html
index 6e1b722e8e154c9b9bfc7c5113773e77233fdced..7706485449fe05b2b264f6ef137f703b64685beb 100644
--- a/templates/macros.html
+++ b/templates/macros.html
@@ -110,7 +110,7 @@
 	<span>Einbetten</span>
 </a>
 <script>
-{% set embedcode = '<iframe width="700" height="394" src="https://videoag.fsmpi.rwth-aachen.de/site/embed.php?lecture='+lectureid|string+'" frameborder="0" allowfullscreen="true"></iframe>' %}
+{% set embedcode = '<iframe width="700" height="394" src="'+url_for('embed', id=lectureid, _external=True)+'" frameborder="0" allowfullscreen="true"></iframe>' %}
 $('#embedcodebtn').popover(
 		{
 			html:true,
diff --git a/templates/sitemap.xml b/templates/sitemap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c847d223271a6a825a8eea07b0887c9343c003fb
--- /dev/null
+++ b/templates/sitemap.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+	{% for page in pages %}
+	<url>
+		<loc>{{page[0]|safe}}</loc>
+		<lastmod>{{page[1]}}</lastmod>
+	</url>
+	{% endfor %}
+</urlset>