diff --git a/README.rst b/README.rst
index 8ae45847c940da8ad7df0ec506c1b62460903a0b..4c16f86d251f542151766101bb08a040a4eb7d5f 100644
--- a/README.rst
+++ b/README.rst
@@ -1,7 +1,11 @@
 RELATE
 ======
 
-Relate is an Environment for Learning And TEaching (formerly known as CourseFlow)
+Relate is an Environment for Learning And TEaching
+
++---------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+
+| .. image:: https://raw.githubusercontent.com/inducer/relate/master/doc/image/screenshot.png | .. image:: https://raw.githubusercontent.com/inducer/relate/master/doc/image/screenshot-2.png |
++---------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+
 
 RELATE is a web-based courseware package.  It is set apart by the following
 features:
@@ -50,7 +54,7 @@ See the `installation guide <http://documen.tician.de/relate/misc.html#installat
 License
 -------
 
-Copyright (C) 2014 Andreas Kloeckner
+Copyright (C) 2014-15 Andreas Kloeckner
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/course/page/code.py b/course/page/code.py
index 3e5a5e0698c4b1c87baa813c24628342f1d65d13..2b3b6669ae8785ca577e8b3aa53c235f57d6e92d 100644
--- a/course/page/code.py
+++ b/course/page/code.py
@@ -259,6 +259,20 @@ class PythonCodeQuestion(PageBaseWithTitle, PageBaseWithValue):
     All user code as well as all code specified as part of the problem
     is in Python 3.
 
+    If you are not including the
+    :attr:`course.constants.flow_permissions.change_answer`
+    permission for your entire flow, you likely want to
+    include this snippet in your question definition:
+
+    .. code-block:: yaml
+
+        access_rules:
+            add_permissions:
+                - change_answer
+
+    This will allow participants multiple attempts at getting
+    the right answer.
+
     .. attribute:: id
 
         |id-page-attr|
@@ -717,6 +731,20 @@ class PythonCodeQuestionWithHumanTextFeedback(
     This page type allows both automatic grading and grading
     by a human grader.
 
+    If you are not including the
+    :attr:`course.constants.flow_permissions.change_answer`
+    permission for your entire flow, you likely want to
+    include this snippet in your question definition:
+
+    .. code-block:: yaml
+
+        access_rules:
+            add_permissions:
+                - change_answer
+
+    This will allow participants multiple attempts at getting
+    the right answer.
+
     The allowed attributes are the same as those of
     :class:`PythonCodeQuestion`, with the following additional,
     required attribute:
diff --git a/doc/conf.py b/doc/conf.py
index cae27a43fef0ce50212de8d4a3ca52f86a76c36c..5bdd3b6f3ee8b5cc57adfd7275ce67bba0ce9610 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -53,9 +53,9 @@ copyright = u'2014, Andreas Kloeckner'
 # built documents.
 #
 # The short X.Y version.
-version = '2014.1'
+version = '2015.1'
 # The full version, including alpha/beta/rc tags.
-release = '2014.1'
+release = version
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/doc/content.rst b/doc/content.rst
index ef1bae33c321f1aa9420704ac549d9465d42e469..e585adcecd707c433d930d0687ed91545ef1d025 100644
--- a/doc/content.rst
+++ b/doc/content.rst
@@ -404,26 +404,19 @@ Here's an example:
 Calendar and Events
 -------------------
 
-To allow course content to be reused easily from year to year, RELATE can
-assign symbolic names to particular dates in your course. For example, instead
-of writing ``2014-10-13``, you could write ``lecture 13`` or ``hw_due 5``.
+The word *event* in relate is a point in time that has a symbolic name.
+Events are created and updated from the 'Content' menu.
 
-To achieve this, each course in RELATE can store a list of events in its
-database. This data serves two purposes:
+Events serve two purposes:
 
-* It provides data for the course calendar, available from the "Student" menu.
+* Their symbolic names can be used wherever a date and time would be
+  required otherwise.  For example, instead of writing ``2014-10-13
+  10:30:00``, you could write ``lecture 13``. This allows course content to
+  be written in a way that is reusable--only the mapping from (e.g.)
+  ``lecture 13`` to the real date needs to be provided--the course material
+  istelf can remain unchanged.
 
-* It maps symbolic event names to concrete points in time, where each such
-  event name consists of a symbolic name (alphanumeric+underscores) plus an
-  optional number. For example, in ``lecture 13``, ``lecture`` is the symbolic
-  name, and ``13`` is the ordinal.
-
-Since this data may vary from one run of the course to the next, it is stored
-along with other by-run-varying data such as grades data and not in the
-:ref:`git-repo`.) A user interface to create and manipulate events is provided
-in the "Instructor" menu. The same menu also contains a menu item to audit
-the course content for references to symbolic event names that are not
-defined.
+* They are (optionally) shown in the class calendar.
 
 For example, to create contiguously numbered ``lecture`` events for a
 lecture occuring on a Tuesday/Thursday schedule, perform the following
@@ -444,7 +437,7 @@ sequence of steps:
 .. _datespec:
 
 Specifying dates in RELATE
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 In various places around its :ref:`YAML documents <yaml-files>`, RELATE
 allows dates to be specified. The following formats are supported:
@@ -477,6 +470,7 @@ augments the calendar data in the database with descriptions and
 other meta-information. It has the following format:
 
 .. code-block:: yaml
+
     event_kinds:
         lecture:
             title: Lecture {nr}
@@ -497,10 +491,14 @@ other meta-information. It has the following format:
                 * Python intro
 
 The first section, ``event_kinds``, provides color and titling information that
-applies to all events sharing a symbolic name. The second, `events`, can be used
-to provide a more verbose description for each event that appears below the main
-calendar. Titles and colors can also be overriden for each event specifically.
+applies to all events sharing a symbolic name. The string ``{nr}`` is automatically replaced
+by the 'ordinal' of each event.
+
+The secondsection, ``events``, can be used to provide a more verbose
+description for each event that appears below the main calendar. Titles and
+colors can also be overriden for each event specifically.
 
-All attributes in each section are optional.
+All attributes in each section (as well as the entire calendar information
+file) are optional.
 
 .. # vim: textwidth=75
diff --git a/doc/flow.rst b/doc/flow.rst
index fc6e9599047c0f9ad3b9540030269e0d578ef6c9..14811dfec15bebb5778effe3c86eaea0d34a8286 100644
--- a/doc/flow.rst
+++ b/doc/flow.rst
@@ -14,9 +14,12 @@ example:
         # RELATE Test Quiz
 
     rules:
+      # (Things behind '#' hash marks are comments and are not siginficant.)
+      # Allow students to start two attempts at the quiz before the deadline.
+      # After that, only allow access to previously started quizzes.
       start:
         -
-          if_before: end_week 1
+          if_before: 2015-03-06 23:59:00
           if_has_role: [student, ta, instructor]
           if_has_fewer_sessions_than: 2
           may_start_new_session: True
@@ -26,23 +29,24 @@ example:
           may_start_new_session: False
           may_list_existing_sessions: True
 
+      # Allow students to submit quiz answers before the deadline.
+      # After the deadline, the quiz becomes read-only. (The 'modify'
+      # permission goes away.)
       access:
          -
-           if_before: end_week 2
+           if_before: 2015-03-06 23:59:00
            permissions: [view, modify, see_correctness]
 
          -
-           permissions: [view, modify, see_correctness, see_answer]
+           permissions: [view, see_correctness, see_answer]
 
+      # Record grades under the machine-readable name 'test_quiz'.
+      # If there is more than one grade, use the maximum.
       grading:
         -
-          if_completed_before: end_week 1
-          grade_identifier: la_quiz
+          grade_identifier: test_quiz
           grade_aggregation_strategy: max_grade
 
-        -
-          grade_identifier: null
-
     groups:
      - id: intro
        pages:
diff --git a/doc/images/screenshot-2.png b/doc/images/screenshot-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..4701b0b349e30611fcd642de93667a2593dbd013
Binary files /dev/null and b/doc/images/screenshot-2.png differ
diff --git a/doc/images/screenshot.png b/doc/images/screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c9ea84ca9cffd35eb414930286c3b4fd33fe4bf
Binary files /dev/null and b/doc/images/screenshot.png differ
diff --git a/doc/index.rst b/doc/index.rst
index 38633ef11d9ef7b95612cd6a713002f9e2b1bbbc..cac88166f9f4a60948cd5af6b7e4f1777c5a0883 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -1,8 +1,12 @@
 Welcome to RELATE's documentation!
 ======================================
 
-    *"I just want to ask my students some quiz questions online. How hard could it
-    possibly be?"*
++-------------------------------------+-------------------------------------+
+| .. image:: images/screenshot.png    | .. image:: images/screenshot-2.png  |
++-------------------------------------+-------------------------------------+
+
+Features
+--------
 
 RELATE is a web-based courseware package.  It is set apart by the following
 features:
@@ -38,11 +42,6 @@ features:
   easy-to-use support for integrating HTML5 video into course content
   without the need for third-party content hosting.
 
-More information around the web:
-
-* `Documentation <http://documen.tician.de/relate>`_
-* `Source code <https://github.com/inducer/relate>`_
-
 RELATE is a based on the popular `Django <https://docs.djangoproject.com/>`_
 web framework for Python.  It lets students participate in online activities,
 each of which is (generically) called a "flow", which allows a sequence of
@@ -50,6 +49,17 @@ pages, each of which can be both static or interactive content, for exapmle a
 video, a quiz question, a page of text, or, within the confines of HTML,
 something completely different.
 
+Links
+-----
+
+More information around the web:
+
+* `Documentation <http://documen.tician.de/relate>`_
+* `Source code <https://github.com/inducer/relate>`_
+
+Table of Contents
+-----------------
+
 .. toctree::
     :maxdepth: 2
 
diff --git a/doc/misc.rst b/doc/misc.rst
index 45c300069d7b9c0e8bf3787efc01d40486f62b74..dbe26efecccd4731ecf6270d71da54578292882d 100644
--- a/doc/misc.rst
+++ b/doc/misc.rst
@@ -69,7 +69,7 @@ Tips
 User-visible Changes
 ====================
 
-Version 2014.1
+Version 2015.1
 --------------
 
 First public release.
@@ -79,7 +79,7 @@ License
 
 RELATE is licensed to you under the MIT/X Consortium license:
 
-Copyright (c) 2014 Andreas Klöckner and Contributors.
+Copyright (c) 2014-15 Andreas Klöckner and Contributors.
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation