diff --git a/models/database.py b/models/database.py
index 067378f138d947f89fa18e58bfb30869a40e5a96..0402687db9337adb973927b65c10eb92a48af497 100644
--- a/models/database.py
+++ b/models/database.py
@@ -152,7 +152,6 @@ class Protocol(db.Model):
             if document.is_compiled
                and (private is None or document.is_private == private) 
         ]
-        print(candidates)
         private_candidates = [document for document in candidates if document.is_private]
         public_candidates = [document for document in candidates if not document.is_private]
         if len(private_candidates) > 0:
@@ -164,7 +163,7 @@ class Protocol(db.Model):
     def delete_orphan_todos(self):
         orphan_todos = [
             todo for todo in self.todos
-            if len(todo.protocols) == 1
+            if len(todo.protocols) <= 1
         ]
         for todo in orphan_todos:
             self.todos.remove(todo)
diff --git a/server.py b/server.py
index 2548046bfdc77697185eeb7df6472c75bfb841c1..38bb07873ae5402f66faa1e65d31ed22f06694e6 100755
--- a/server.py
+++ b/server.py
@@ -17,7 +17,7 @@ import config
 from shared import db, date_filter, datetime_filter, date_filter_long, time_filter, ldap_manager, security_manager, current_user, check_login, login_required, group_required
 from utils import is_past, mail_manager, url_manager
 from models.database import ProtocolType, Protocol, DefaultTOP, TOP, Document, Todo, Decision, MeetingReminder, Error
-from views.forms import LoginForm, ProtocolTypeForm, DefaultTopForm, MeetingReminderForm, NewProtocolForm, DocumentUploadForm, KnownProtocolSourceUploadForm, NewProtocolSourceUploadForm
+from views.forms import LoginForm, ProtocolTypeForm, DefaultTopForm, MeetingReminderForm, NewProtocolForm, DocumentUploadForm, KnownProtocolSourceUploadForm, NewProtocolSourceUploadForm, ProtocolForm
 from views.tables import ProtocolsTable, ProtocolTypesTable, ProtocolTypeTable, DefaultTOPsTable, MeetingRemindersTable, ErrorsTable, TodosTable, DocumentsTable
 
 app = Flask(__name__)
@@ -308,6 +308,21 @@ def new_protocol():
         form.protocoltype.data = type_id
     return render_template("protocol-new.html", form=form, upload_form=upload_form, protocoltypes=protocoltypes)
 
+@app.route("/protocol/edit/<int:protocol_id>", methods=["POST"])
+@login_required
+def edit_protocol(protocol_id):
+    user = current_user()
+    protocol = Protocol.query.filter_by(id=protocol_id).first()
+    if protocol is None or not protocol.protocoltype.has_modify_right(user):
+        flash("Invalides Protokoll oder fehlende Zugriffsrechte.", "alert-error")
+        return redirect(request.args.get("next") or url_for("list_protocols"))
+    form = ProtocolForm(obj=protocol)
+    if form.validate_on_submit():
+        form.populate_obj(protocol)
+        db.session.commit()
+        return redirect(request.args.get("next") or url_for("show_protocol", protocol_id=protocol.id))
+    return redirect(request.args.get("fail") or url_for("update_protocol", protocol_id=protocol.id))
+
 @app.route("/protocol/show/<int:protocol_id>")
 def show_protocol(protocol_id):
     user = current_user()
@@ -335,6 +350,7 @@ def delete_protocol(protocol_id):
         flash("Invalides Protokoll oder keine Berechtigung.", "alert-error")
         return redirect(request.args.get("next") or url_for("index"))
     name = protocol.get_identifier()
+    protocol.delete_orphan_todos()
     db.session.delete(protocol)
     db.session.commit()
     flash("Protokoll {} ist gelöscht.".format(name), "alert-success")
@@ -394,7 +410,6 @@ def upload_new_protocol():
         if form.source.data is None:
             flash("Es wurde keine Datei ausgewählt.", "alert-error")
         else:
-            print(form.source.data)
             file = form.source.data
             if file.filename == "":
                 flash("Es wurde keine Datei ausgewählt.", "alert-error")
@@ -434,7 +449,8 @@ def update_protocol(protocol_id):
         flash("Invalides Protokoll oder keine Berechtigung.", "alert-error")
         return redirect(request.args.get("next") or url_for("index"))
     upload_form = KnownProtocolSourceUploadForm()
-    return render_template("protocol-update.html", upload_form=upload_form, protocol=protocol)
+    edit_form = ProtocolForm(obj=protocol)
+    return render_template("protocol-update.html", upload_form=upload_form, edit_form=edit_form, protocol=protocol)
 
 @app.route("/todos/list")
 def list_todos():
diff --git a/shared.py b/shared.py
index bcee8c7d6dc8cf9c654de5eb863ad55ef50883d6..b58cf3219bd11fe858f7bf6931980dae69648e6c 100644
--- a/shared.py
+++ b/shared.py
@@ -74,7 +74,7 @@ def date_filter_long(date):
 def date_filter_short(date):
     return date.strftime("%d.%m.%Y")
 def time_filter(time):
-    return time.strftime("%H:%m")
+    return time.strftime("%H:%M")
 
 def class_filter(obj):
     return obj.__class__.__name__
diff --git a/templates/layout.html b/templates/layout.html
index 5a19c02e7920ed9ec9d5aba37eb8a904aae011e2..18ae724e06af1e03bf8cdd4cc0fe58324c27ba39 100644
--- a/templates/layout.html
+++ b/templates/layout.html
@@ -27,6 +27,9 @@
         <div id="navbar" class="navbar-collapse collapse">
             <ul class="nav navbar-nav">
                 <li><a href="{{url_for("index")}}">Zuhause</a></li>
+                {% if check_login() %}
+                <li><a href="{{url_for("new_protocol")}}">Neues Protokoll</a></li>
+                {% endif %}
                 <li><a href="{{url_for("list_protocols")}}">Protokolle</a></li>
                 <li><a href="{{url_for("list_todos")}}">Todos</a></li>
                 {% if check_login() %}
diff --git a/templates/protocol-show.html b/templates/protocol-show.html
index 2cd457cf5a748e0ab8adaccf8d899ccdc19ab86c..d9bde019c5c4de308d263a7e2df3c1f6f59540e5 100644
--- a/templates/protocol-show.html
+++ b/templates/protocol-show.html
@@ -10,9 +10,7 @@
             {% if protocol.source is not none %}
                 <a class="btn btn-primary" href="{{url_for("get_protocol_source", protocol_id=protocol.id)}}">Download Quelltext</a>
             {% endif %} 
-            {% if protocol.is_done() %}
-                <a class="btn btn-success" href="{{url_for("update_protocol", protocol_id=protocol.id)}}">Protokoll editieren</a>
-            {% endif %}
+            <a class="btn {% if protocol.is_done() %}btn-success{% else %}btn-default{% endif %}" href="{{url_for("update_protocol", protocol_id=protocol.id)}}">Protokoll editieren</a>
             <a class="btn btn-default" href="{{protocol.get_etherpad_link()}}" target="_blank">Etherpad</a>
             <a class="btn btn-default" href="{{url_for("show_type", type_id=protocol.protocoltype.id)}}">Typ</a>
             <a class="btn btn-danger" href="{{url_for("delete_protocol", protocol_id=protocol.id)}}" onclick="return confirm('Bist du dir sicher, dass du das Protokoll {{protocol.get_identifier()}} löschen möchtest?');">Löschen</a>
@@ -20,7 +18,7 @@
     </div>
     <div class="row">
         <div id="left-column" class="col-lg-6">
-            <h2>Protokoll: {{protocol.protocoltype.name}} vom {{protocol.date|datify}}</h2>
+            <h2>Protokoll: {{protocol.protocoltype.name}} {% if protocol.date is not none %}vom {{protocol.date|datify}}{% endif %}</h2>
             {% if protocol.is_done() %}
                 {% if protocol.date is not none %}
                     <p><strong>Datum:</strong> {{protocol.date|datify_long}}</p>
@@ -38,7 +36,7 @@
                     <p><strong>Anwesende:</strong> {{protocol.participants}}</p>
                 {% endif %}
             {% else %}
-                <p><strong>Geplant:</strong> {{protocol.date|datify_long}}</p>
+                {% if protocol.date is not none %}<p><strong>Geplant:</strong> {{protocol.date|datify_long}}{% endif %}</p>
             {% endif %}
 
             <h3>Tagesordnung</h3>
diff --git a/templates/protocol-update.html b/templates/protocol-update.html
index fec90311f4bee0a82bf07090584149404c289e38..28e8c47a5145b953808427c0c03c861699766e56 100644
--- a/templates/protocol-update.html
+++ b/templates/protocol-update.html
@@ -6,6 +6,9 @@
 <div class="container">
     <div class="row">
         <div id="left-column" class="col-lg-6">
+            {{render_form(edit_form, action_url=url_for("edit_protocol", protocol_id=protocol.id), action_text="Ändern")}}
+        </div>
+        <div id="right-column" class="col-lg-6">
             <h3>Protokoll herunterladen</h3>
             <div class="btn-group">
                 {% if protocol.source is not none %}
@@ -16,8 +19,6 @@
                     <a class="btn btn-success" href="{{url_for("download_document", document_id=protocol.get_compiled_document().id)}}">Download PDF</a>
                 {% endif %}
             </div>
-        </div>
-        <div id="right-column" class="col-lg-6">
             <h3>Neue Version hochladen</h3>
             {{render_form(upload_form, action_url=url_for("upload_source_to_known_protocol", protocol_id=protocol.id), action_text="Hochladen", enctype="multipart/form-data")}}
         </div>
diff --git a/views/forms.py b/views/forms.py
index bc7d32342f68acff54023ee7444837779d23f695..5474a328e298bf63778bec3e9ad5c34b1f79c008 100644
--- a/views/forms.py
+++ b/views/forms.py
@@ -1,5 +1,5 @@
 from flask_wtf import FlaskForm
-from wtforms import StringField, PasswordField, BooleanField, DateField, HiddenField, IntegerField, SelectField, FileField
+from wtforms import StringField, PasswordField, BooleanField, DateField, HiddenField, IntegerField, SelectField, FileField, DateTimeField
 from wtforms.validators import InputRequired
 
 class LoginForm(FlaskForm):
@@ -47,3 +47,13 @@ class NewProtocolSourceUploadForm(FlaskForm):
     def __init__(self, protocoltypes, **kwargs):
         super().__init__(**kwargs)
         self.protocoltype.choices = [(protocoltype.id, protocoltype.short_name) for protocoltype in protocoltypes]
+
+class ProtocolForm(FlaskForm):
+    date = DateField("Datum", validators=[InputRequired("Bitte gib das Datum des Protkolls an.")], format="%d.%m.%Y")
+    start_time = DateTimeField("Beginn", format="%H:%M")
+    end_time = DateTimeField("Ende", format="%H:%M")
+    location = StringField("Ort")
+    author = StringField("Protokollant")
+    participants = StringField("Anwesende")
+    done = BooleanField("Fertig")
+