diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py
index 92a48aa48e254a9c12a53328c20ea334b43fca93..18c3ba48fb1f1f86eaaf4905e9ef4eb85e21518e 100644
--- a/aleksis/apps/alsijil/forms.py
+++ b/aleksis/apps/alsijil/forms.py
@@ -19,6 +19,11 @@ class LessonDocumentationForm(forms.ModelForm):
         model = LessonDocumentation
         fields = ["topic", "homework"]
 
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+
+        self.fields["homework"].label = _("Homework for the next lesson")
+
 
 class PersonalNoteForm(forms.ModelForm):
     class Meta:
diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py
index a2c3da752a42ece63736342083b671bd4f986f8a..1c73ca77641e9b5b3034cfcb9dc8f2aff383ab07 100644
--- a/aleksis/apps/alsijil/model_extensions.py
+++ b/aleksis/apps/alsijil/model_extensions.py
@@ -1,4 +1,5 @@
 from datetime import date
+from typing import Optional, Union
 
 from django.db.models import Exists, OuterRef, QuerySet
 from django.utils.translation import gettext as _
@@ -8,7 +9,7 @@ from calendarweek import CalendarWeek
 from aleksis.apps.chronos.models import LessonPeriod
 from aleksis.core.models import Group, Person
 
-from .models import PersonalNote
+from .models import LessonDocumentation, PersonalNote
 
 
 @Person.method
@@ -123,3 +124,60 @@ Group.add_permission(
 Person.add_permission(
     "register_absence_person", _("Can register an absence for a person")
 )
+
+@LessonPeriod.method
+def get_lesson_documentation(
+    self, week: Optional[CalendarWeek] = None
+) -> Union[LessonDocumentation, None]:
+    """Get lesson documentation object for this lesson."""
+    if not week:
+        week = self.week
+    try:
+        return LessonDocumentation.objects.get(lesson_period=self, week=week.week)
+    except LessonDocumentation.DoesNotExist:
+        return None
+
+
+@LessonPeriod.method
+def get_or_create_lesson_documentation(
+    self, week: Optional[CalendarWeek] = None
+) -> LessonDocumentation:
+    """Get or create lesson documentation object for this lesson."""
+    if not week:
+        week = self.week
+    lesson_documentation, created = LessonDocumentation.objects.get_or_create(
+        lesson_period=self, week=week.week
+    )
+    return lesson_documentation
+
+
+@LessonPeriod.method
+def get_absences(self, week: Optional[CalendarWeek] = None) -> QuerySet:
+    """Get all personal notes of absent persons for this lesson."""
+    if not week:
+        week = self.week
+    return self.personal_notes.filter(week=week.week, absent=True)
+
+
+@LessonPeriod.method
+def get_excused_absences(self, week: Optional[CalendarWeek] = None) -> QuerySet:
+    """Get all personal notes of excused absent persons for this lesson."""
+    if not week:
+        week = self.week
+    return self.personal_notes.filter(week=week.week, absent=True, excused=True)
+
+
+@LessonPeriod.method
+def get_unexcused_absences(self, week: Optional[CalendarWeek] = None) -> QuerySet:
+    """Get all personal notes of unexcused absent persons for this lesson."""
+    if not week:
+        week = self.week
+    return self.personal_notes.filter(week=week.week, absent=True, excused=False)
+
+
+@LessonPeriod.method
+def get_tardinesses(self, week: Optional[CalendarWeek] = None) -> QuerySet:
+    """Get all personal notes of late persons for this lesson."""
+    if not week:
+        week = self.week
+    return self.personal_notes.filter(week=week.week, late__gt=0)
diff --git a/aleksis/apps/alsijil/static/css/alsijil/full_register.css b/aleksis/apps/alsijil/static/css/alsijil/full_register.css
index e9ee93a5c93d948307ae15b9f4b146616e73279a..2c7327003c36e7dde492103eb5ad1b4cb5a65801 100644
--- a/aleksis/apps/alsijil/static/css/alsijil/full_register.css
+++ b/aleksis/apps/alsijil/static/css/alsijil/full_register.css
@@ -1,143 +1,80 @@
-@page {
-  size: A4;
+table.small-print {
+    font-size: 10pt;
 }
 
-body {
-  font-family: Arial, Helvetica, san-serif;
-  font-size: 10pt;
+#signatures {
+    padding-top: 3em;
 }
 
-section.sheet.smallprint {
-  font-size: 8pt;
+#signatures .signature {
+    display: inline-block;
+    width: 12em;
+    border-top: 1px solid;
+    margin-right: 20px;
 }
 
-section.sheet.bigprint {
-  font-size: 12pt;
+tr {
+    border-bottom: 1px solid rgba(0, 0, 0, 0.3);
 }
 
-span.signature-line {
-  display: inline-block;
-  width: 10em;
-  border-bottom: 1px solid;
-}
-
-#titlepage {
-  display: flex;
-  flex-direction: column;
-  justify-content: space-around;
-}
-
-#titlepage h1 {
-  text-align: center;
-}
-
-#titlepage img#school-logo {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-  width: 50%;
-}
-
-#titlepage p#group-desc {
-  font-weight: bold;
-  font-size: 150%;
-  text-align: center;
-}
-
-#titlepage p#printed-info {
-  text-align: center;
-}
-
-#titlepage p#group-owners {
-  font-size: 130%;
-  text-align: center;
-}
-
-#titlepage p#signatures {
-  padding-top: 2em;
-}
-
-table {
-  width: 100%;
-  border: 1px solid black;
-  border-collapse: collapse;
-}
-
-th, td {
-  border: 1px solid black;
-}
-
-tr:nth-child(even) {
-  background-color: #f2f2f2;
+td, th {
+    padding: 1px;
 }
 
 tr.lessons-day-first {
-  border-top: 2px solid;
+    border-top: 3px solid rgba(0, 0, 0, 0.3);
 }
 
 th.lessons-day-head {
-  transform: rotate(-90deg);
+    text-align: center;
+    transform: rotate(-90deg);
 }
 
 tr.lesson-cancelled td.subj {
-  text-decoration: line-through;
+    text-decoration: line-through;
 }
 
 tr.lesson-cancelled td {
-  background-color: #dc3545;
+    background-color: #EF9A9A;
 }
+
 tr.lesson-substituted td.lesson-subj {
-  text-decoration: line-through;
+    text-decoration: line-through;
 }
 
 tr.lesson-substituted td {
-  background-color: #ffc107;
+    background-color: #ffb74d;
 }
 
 td.lesson-notes {
-  font-size: 80%;
+    font-size: 80%;
 }
 
 td.lesson-notes span.lesson-note-absent {
-  color: #cc0000;
+    color: #cc0000;
 }
 
 td.lesson-notes span.lesson-note-late {
-  color: #ff9933;
+    color: #ff9933;
 }
 
 td.lesson-notes span.lesson-note-excused {
-  color: #009933;
+    color: #009933;
 }
 
 table.person-info {
-  border: none;
+    border: none;
 }
 
 table.person-info td.person-img {
-  text-align: center;
+    text-align: center;
 }
 
 table.person-info td.person-img img {
-  max-height: 30mm;
-}
-
-.sheet {
-    overflow: visible;
-    height: auto !important;
-}
-
-.sheet * {
-    page-break-inside: avoid;
+    max-height: 30mm;
 }
 
 img.max-size-600 {
-  max-width: 600px;
-  max-height: 600px;
-}
-
-img.center{
-  position: relative;
-  left: 50%;
-  transform: translateX(-50%);
+    max-width: 600px;
+    max-height: 600px;
 }
diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
index f2ec6519f0d0eae946a4431244bbbf96396a6846..4560bada94860e536797afd840d876e6619ba250 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
@@ -1,6 +1,6 @@
 {# -*- engine:django -*- #}
 {% extends "core/base.html" %}
-{% load material_form i18n static rules %}
+{% load week_helpers material_form i18n static rules %}
 
 {% block browser_title %}{% blocktrans %}Lesson{% endblocktrans %}{% endblock %}
 
@@ -28,9 +28,31 @@
 {% endblock %}
 
 {% block content %}
+<<<<<<< HEAD
   {% has_perm "alsijil.view_lessondocumentation" user lesson_period as can_view_lesson_documentation %}
   {% has_perm "alsijil.edit_lessondocumentation" user lesson_period as can_edit_lesson_documentation %}
   {% has_perm "alsijil.edit_personalnote" user lesson_period as can_edit_personalnote %}
+=======
+  <div class="row">
+    <div class="col s12">
+      {% with prev_lesson=lesson_period.prev %}
+        <a class="btn-flat left waves-effect waves-light"
+           href="{% url "lesson_by_week_and_period" prev_lesson.week.year prev_lesson.week.week prev_lesson.id %}">
+          <i class="material-icons left">arrow_back</i>
+          {% trans "Previous lesson" %}
+        </a>
+      {% endwith %}
+
+      {% with next_lesson=lesson_period.next %}
+        <a class="btn-flat right waves-effect waves-light"
+           href="{% url "lesson_by_week_and_period" next_lesson.week.year next_lesson.week.week next_lesson.id %}">
+          <i class="material-icons right">arrow_forward</i>
+          {% trans "Next lesson" %}
+        </a>
+      {% endwith %}
+    </div>
+  </div>
+>>>>>>> master
 
   <form method="post">
     <div class="row">
@@ -43,6 +65,53 @@
     {% csrf_token %}
     <div class="row">
       <div class="col s12 m12 l6 xl8">
+        {% with prev_lesson=lesson_period.prev prev_doc=prev_lesson.get_lesson_documentation %}
+          {% with prev_doc=prev_lesson.get_lesson_documentation absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses %}
+            {% if prev_doc %}
+              {% weekday_to_date prev_lesson.week prev_lesson.period.weekday as prev_date %}
+
+              <div class="card">
+                <div class="card-content">
+                  <span class="card-title">
+                    {% blocktrans %}Overview: Previous lesson{% endblocktrans %} ({{ prev_date }},
+                    {% blocktrans with period=prev_lesson.period.period %}{{ period }}. period{% endblocktrans %})
+                  </span>
+
+                  <table>
+                    {% if prev_doc.topic %}
+                      <tr>
+                        <th class="collection-item">{% trans "Lesson topic of previous lesson:" %}</th>
+                        <td>{{ prev_doc.topic }}</td>
+                      </tr>
+                    {% endif %}
+
+                    {% if prev_doc.homework %}
+                      <tr>
+                        <th class="collection-item">{% trans "Homework for this lesson:" %}</th>
+                        <td>{{ prev_doc.homework }}</td>
+                      </tr>
+                    {% endif %}
+
+                    {% if absences %}
+                      <tr>
+                        <th>{% trans "Absent persons:" %}</th>
+                        <td>{% include "alsijil/partials/absences.html" with notes=absences %}</td>
+                      </tr>
+                    {% endif %}
+
+                    {% if tardinesses %}
+                      <tr>
+                        <th>{% trans "Late persons:" %}</th>
+                        <td>{% include "alsijil/partials/tardinesses.html" with notes=tardinesses %}</td>
+                      </tr>
+                    {% endif %}
+                  </table>
+                </div>
+              </div>
+            {% endif %}
+          {% endwith %}
+        {% endwith %}
+
         <div class="card">
           <div class="card-content">
           <span class="card-title">
diff --git a/aleksis/apps/alsijil/templates/alsijil/partials/absences.html b/aleksis/apps/alsijil/templates/alsijil/partials/absences.html
new file mode 100644
index 0000000000000000000000000000000000000000..6584142bf36e2828471bbb73367442c80f572aee
--- /dev/null
+++ b/aleksis/apps/alsijil/templates/alsijil/partials/absences.html
@@ -0,0 +1,6 @@
+{% load i18n %}
+{% for note in notes %}
+  <span class="{% if note.excused %}green-text{% else %}red-text{% endif %}">{{ note.person }}
+    {% if note.excused %}{% trans "(e)" %}{% else %}{% trans "(u)" %}{% endif %}{% if not forloop.last %},{% endif %}
+  </span>
+{% endfor %}
diff --git a/aleksis/apps/alsijil/templates/alsijil/partials/tardinesses.html b/aleksis/apps/alsijil/templates/alsijil/partials/tardinesses.html
new file mode 100644
index 0000000000000000000000000000000000000000..b3639ea88b779bd746ab551f0a9f2e5d938fd786
--- /dev/null
+++ b/aleksis/apps/alsijil/templates/alsijil/partials/tardinesses.html
@@ -0,0 +1,3 @@
+{% for note in notes %}
+  <span>{{ note.person }} ({{ note.late }}'){% if not forloop.last %},{% endif %}</span>
+{% endfor %}
diff --git a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html
index 32069660f212b015faacd13c73d5b4689382b2b2..15c854b2853b1ee23195beed8ff3175bd9f74a7b 100644
--- a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html
+++ b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html
@@ -1,285 +1,316 @@
+{% extends "core/base_print.html" %}
+
 {% load static i18n cropping data_helpers week_helpers %}
 
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8" />
-    <link rel="stylesheet"
-      href="{% static 'css/alsijil/paper.css' %}" />
-    <link rel="stylesheet"
-      href="{% static 'css/alsijil/full_register.css' %}" />
-  </head>
+{% block page_title %}
+  {% trans "Class register:" %} {{ group.name }}
+{% endblock %}
 
-  <body class="A4">
-    <section class="sheet padding-10mm bigprint" id="titlepage">
-      <div>
-        <h1>{% trans 'Class register' %}</h1>
-        {% static "img/aleksis-banner.svg" as aleksis_banner %}
-        <img src="{% firstof request.site.preferences.theme__logo.url aleksis_banner %}"
-             alt="{{ request.site.preferences.general__title }} – Logo" class="max-size-600 center">
-        <p id="group-desc">
-          {{ group.name }}
-        </p>
-        <p id="group-owners">
-          {% trans 'Owners' %}:
-          {{ group.owners.all|join:', ' }}
-        </p>
-        <p id="printed-info">
-          {% trans 'Printed on' %} {{ today }}
-        </p>
-      </div>
-      <div>
-        <hr />
+{% block extra_head %}
+  <link rel="stylesheet" href="{% static 'css/alsijil/full_register.css' %}"/>
+{% endblock %}
+
+{% block content %}
+
+  <div class="center-align">
+    <h1>{% trans 'Class register' %}</h1>
+    {% static "img/aleksis-banner.svg" as aleksis_banner %}
+    <img src="{% firstof request.site.preferences.theme__logo.url aleksis_banner %}"
+         alt="{{ request.site.preferences.general__title }} – Logo" class="max-size-600 center">
+    <h4 id="group-desc">
+      {{ group.name }}
+    </h4>
+    <p id="group-owners" class="flow-text">
+      {% trans 'Owners' %}:
+      {{ group.owners.all|join:', ' }}
+    </p>
+    <p id="printed-info">
+      {% trans 'Printed on' %} {{ today }}
+    </p>
+  </div>
+  <div>
+    <hr/>
+  </div>
+  <div>
+    <p>
+      {% blocktrans %}
+        This printout is intended for archival purposes. The main copy of
+        the class register is stored in the AlekSIS School Information
+        System.
+      {% endblocktrans %}
+    </p>
+    <p>
+      {% blocktrans %}
+        Copies of the class register, both digital and as printout, must
+        only be kept inside the school and/or on devices authorised by the
+        school.
+      {% endblocktrans %}
+    </p>
+    <p>
+      {% blocktrans %}
+        The owner of the group and the headteacher confirm the above, as
+        well as the correctness of this printout.
+      {% endblocktrans %}
+    </p>
+    <div id="signatures">
+      <div class="signature">
+        {% trans 'Owners' %}
       </div>
-      <div>
-        <p>
-          {% blocktrans %}
-            This printout is intended for archival purposes. The main copy of
-            the class register is stored in the AlekSIS School Information
-            System.
-          {% endblocktrans %}
-        </p>
-        <p>
-          {% blocktrans %}
-            Copies of the class register, both digital and as printout, must
-            only be kept inside the school and/or on devices authorised by the
-            school.
-          {% endblocktrans %}
-        </p>
-        <p>
-          {% blocktrans %}
-            The owner of the group and the headteacher confirm the above, as
-            well as the correctness of this printout.
-          {% endblocktrans %}
-        </p>
-        <p id="signatures">
-          <span class="signature-line"></span> ({% trans 'Owners' %}),
-          <span class="signature-line"></span> ({% trans 'Headteacher' %})
-        </p>
+      <div class="signature">
+        {% trans 'Headteacher' %}
       </div>
-    </section>
+    </div>
+  </div>
 
-    <section class="sheet padding-10mm" id="persons-overview">
-      <h2>{% trans 'Persons in group' %} {{ group.name }}</h2>
+  <div class="page-break">&nbsp;</div>
 
-      <table id="persons">
-        <thead>
+  <h4>{% trans 'Persons in group' %} {{ group.name }}</h4>
+
+  <table id="persons">
+    <thead>
+    <tr>
+      <th>{% trans 'No.' %}</th>
+      <th>{% trans 'Last name' %}</th>
+      <th>{% trans 'First name' %}</th>
+      <th>{% trans 'Sex' %}</th>
+      <th>{% trans 'Date of birth' %}</th>
+      <th>{% trans 'Absences' %}</th>
+      <th>{% trans 'Unexcused' %}</th>
+      <th>{% trans 'Tard.' %}</th>
+    </tr>
+    </thead>
+
+    <tbody>
+    {% for person in persons %}
+      <tr>
+        <td>{{ forloop.counter }}</td>
+        <td>{{ person.last_name }}</td>
+        <td>{{ person.first_name }}</td>
+        <td>{{ person.get_sex_display }}</td>
+        <td>{{ person.date_of_birth }}</td>
+        <td>{{ person.absences_count }}</td>
+        <td>{{ person.unexcused }}</td>
+        <td>{{ person.tardiness }}'</td>
+      </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+
+  <div class="page-break">&nbsp;</div>
+
+  {% if group.lessons.all %}
+    <h4>{% trans 'Teachers and lessons in group' %} {{ group.name }}</h4>
+
+    <table id="lessons">
+      <thead>
+      <tr>
+        <th>{% trans 'Subject' %}</th>
+        <th>{% trans 'Teacher' %}</th>
+        <th>{% trans 'Lesson start' %}</th>
+        <th>{% trans 'Lesson end' %}</th>
+        <th>{% trans 'Per week' %}</th>
+      </tr>
+      </thead>
+
+      <tbody>
+      {% for lesson in group.lessons.all %}
+        <tr>
+          <td>{{ lesson.subject.name }}</td>
+          <td>{{ lesson.teachers.all|join:', ' }}</td>
+          <td>{{ lesson.date_start }}</td>
+          <td>{{ lesson.date_end }}</td>
+          <td>{{ lesson.lesson_periods.count }}</td>
+        </tr>
+      {% endfor %}
+      </tbody>
+    </table>
+    <div class="page-break">&nbsp;</div>
+
+  {% endif %}
+
+  {% if group.child_groups.all %}
+    <h4>{% trans 'Teachers and lessons in child groups' %}</h4>
+
+    <table id="lessons">
+      <thead>
+      <tr>
+        <th>{% trans 'Group' %}</th>
+        <th>{% trans 'Subject' %}</th>
+        <th>{% trans 'Teacher' %}</th>
+        <th>{% trans 'Lesson start' %}</th>
+        <th>{% trans 'Lesson end' %}</th>
+        <th>{% trans 'Per week' %}</th>
+      </tr>
+      </thead>
+
+      <tbody>
+      {% for child_group in group.child_groups.all %}
+        {% for lesson in child_group.lessons.all %}
           <tr>
-            <th>{% trans 'No.' %}</th>
-            <th>{% trans 'Last name' %}</th>
-            <th>{% trans 'First name' %}</th>
-            <th>{% trans 'Sex' %}</th>
-            <th>{% trans 'Date of birth' %}</th>
-            <th>{% trans 'Absences' %}</th>
-            <th>{% trans 'Unexcused' %}</th>
-            <th>{% trans 'Tard.' %}</th>
+            <td>{{ child_group.name }}</td>
+            <td>{{ lesson.subject.name }}</td>
+            <td>{{ lesson.teachers.all|join:', ' }}</td>
+            <td>{{ lesson.date_start }}</td>
+            <td>{{ lesson.date_end }}</td>
+            <td>{{ lesson.lesson_periods.count }}</td>
           </tr>
-        </thead>
+        {% endfor %}
+      {% endfor %}
+      </tbody>
+    </table>
+    <div class="page-break">&nbsp;</div>
+  {% endif %}
 
-        <tbody>
-          {% for person in persons %}
-            <tr>
-              <td>{{ forloop.counter }}</td>
-              <td>{{ person.last_name }}</td>
-              <td>{{ person.first_name }}</td>
-              <td>{{ person.get_sex_display }}</td>
-              <td>{{ person.date_of_birth }}</td>
-              <td>{{ person.absences_count}}</td>
-              <td>{{ person.unexcused }}</td>
-              <td>{{ person.tardiness }}</td>
-            </tr>
-          {% endfor %}
-        </tbody>
-      </table>
-    </section>
+  {% for person in persons %}
+    <h4>{% trans 'Personal overview' %}: {{ person.last_name }}, {{ person.first_name }}</h4>
 
-    <section class="sheet padding-10mm" id="lessons-overview">
-      <h2>{% trans 'Teachers and lessons in group' %} {{ group.name }}</h2>
+    <h5>{% blocktrans %}Contact details{% endblocktrans %}</h5>
+    <table class="person-info">
+      <tr>
+        <td rowspan="6" class="person-img">
+          {% if person.photo %}
+            <img src="{% cropped_thumbnail person 'photo_cropping' max_size='300x400' %}"
+                 alt="{{ person.first_name }} {{ person.last_name }}"/>
+          {% else %}
+            <img src="{% static 'img/fallback.png' %}" alt="{{ person.first_name }} {{ person.last_name }}"/>
+          {% endif %}
+        </td>
+        <td><i class="material-icons">person</i></td>
+        <td colspan="2">{{ person.first_name }} {{ person.additional_name }} {{ person.last_name }}</td>
+      </tr>
+      <tr>
+        <td><i class="material-icons">face</i></td>
+        <td colspan="2">{{ person.get_sex_display }}</td>
+      </tr>
+      <tr>
+        <td><i class="material-icons">home</i></td>
+        <td>{{ person.street }} {{ person.housenumber }}</td>
+        <td>{{ person.postal_code }} {{ person.place }}</td>
+      </tr>
+      <tr>
+        <td><i class="material-icons">phone</i></td>
+        <td>{{ person.phone_number }}</td>
+        <td>{{ person.mobile_number }}</td>
+      </tr>
+      <tr>
+        <td><i class="material-icons">email</i></td>
+        <td colspan="2">{{ person.email }}</td>
+      </tr>
+      <tr>
+        <td><i class="material-icons">cake</i></td>
+        <td colspan="2">{{ person.date_of_birth|date }}</td>
+      </tr>
+    </table>
 
-      <table id="lessons">
+    {% if personal_note_filters %}
+      <h5>{% trans 'Statistics on remarks' %}</h5>
+      <table>
         <thead>
-          <tr>
-            <th>{% trans 'Subject' %}</th>
-            <th>{% trans 'Teacher' %}</th>
-            <th>{% trans 'Lesson start' %}</th>
-            <th>{% trans 'Lesson end' %}</th>
-            <th>{% trans 'Per week' %}</th>
-          </tr>
+        <tr>
+          <th>{% trans 'Description' %}</th>
+          <th>{% trans 'Count' %}</th>
+        </tr>
         </thead>
 
         <tbody>
-          {% for lesson in group.lessons.all %}
-            <tr>
-              <td>{{ lesson.subject.name }}</td>
-              <td>{{ lesson.teachers.all|join:', ' }}</td>
-              <td>{{ lesson.date_start }}</td>
-              <td>{{ lesson.date_end }}</td>
-              <td>{{ lesson.lesson_periods.count }}</td>
-            </tr>
-          {% endfor %}
+        {% for note_filter in personal_note_filters %}
+          <tr>
+            <td>{{ note_filter.description }}</td>
+            {% with "_personal_notes_with_"|add:note_filter.identifier as identifier %}
+              <td>{{ person|get_dict:identifier }}</td>
+            {% endwith %}
+          </tr>
+        {% endfor %}
         </tbody>
       </table>
-    </section>
+    {% endif %}
 
-    {% for person in persons %}
-      <section class="sheet padding-10mm">
-        <h2>{% trans 'Personal overview' %}: {{ person.last_name }}, {{ person.first_name }}</h2>
+    <h5>{% trans 'Absences and tardiness' %}</h5>
+    <table>
+      <thead>
+      <tr>
+        <th>{% trans 'Absences' %}</th>
+        <th>{% trans 'Unexcused' %}</th>
+        <th>{% trans 'Tardiness' %}</th>
+      </tr>
+      </thead>
+
+      <tbody>
+      <tr>
+        <td>{{ person.absences_count }}</td>
+        <td>{{ person.unexcused }}</td>
+        <td>{{ person.tardiness }}'</td>
+      </tr>
+      </tbody>
+    </table>
 
-        <h3>{% blocktrans %}Contact details{% endblocktrans %}</h3>
-        <table class="person-info">
+    <h5>{% trans 'Relevant personal notes' %}</h5>
+    <table class="small-print">
+      <thead>
+      <tr>
+        <th>{% trans 'Date' %}</th>
+        <th>{% trans 'Pe.' %}</th>
+        <th>{% trans 'Subj.' %}</th>
+        <th>{% trans 'Te.' %}</th>
+        <th>{% trans 'Absent' %}</th>
+        <th>{% trans 'Tard.' %}</th>
+        <th>{% trans 'Remarks' %}</th>
+      </tr>
+      </thead>
+
+      <tbody>
+      {% for note in person.personal_notes.all %}
+        {% if note.absent or note.late or note.remarks %}
+          {% period_to_date note.week note.lesson_period.period as note_date %}
           <tr>
-            <td rowspan="6" class="person-img">
-              {% if person.photo %}
-                <img src="{% cropped_thumbnail person 'photo_cropping' max_size='300x400' %}" alt="{{ person.first_name }} {{ person.last_name }}" />
-              {% else %}
-                <img src="{% static 'img/fallback.png' %}" alt="{{ person.first_name }} {{ person.last_name }}" />
+            <td>{{ note_date }}</td>
+            <td>{{ note.lesson_period.period.period }}</td>
+            <td>{{ note.lesson_period.get_subject.short_name }} </td>
+            <td>{{ note.lesson_period.get_teachers.first.short_name }}</td>
+            <td>
+              {% if note.absent %}
+                {% trans 'Yes' %}
+                {% if note.escused %}
+                  ({% trans 'e' %})
+                {% endif %}
               {% endif %}
             </td>
-            <td><i class="material-icons">person</i></td>
-            <td>{{ person.first_name }}</td>
-            <td>{{ person.additional_name }}</td>
-            <td>{{ person.last_name }}</td>
-          </tr>
-          <tr>
-            <td><i class="material-icons">face</i></td>
-            <td colspan="3">{{ person.get_sex_display }}</td>
-          </tr>
-          <tr>
-            <td><i class="material-icons">home</i></td>
-            <td colspan="2">{{ person.street }} {{ person.housenumber }}</td>
-            <td colspan="2">{{ person.postal_code }} {{ person.place }}</td>
-          </tr>
-          <tr>
-            <td><i class="material-icons">phone</i></td>
-            <td>{{ person.phone_number }}</td>
-            <td>{{ person.mobile_number }}</td>
-          </tr>
-          <tr>
-            <td><i class="material-icons">email</i></td>
-            <td colspan="3">{{ person.email }}</td>
-          </tr>
-          <tr>
-            <td><i class="material-icons">gift</i></td>
-            <td colspan="3">{{ person.date_of_birth|date }}</td>
+            <td>
+              {% if note.late %}
+                {{ note.late }}'
+              {% endif %}
+            </td>
+            <td>{{ note.remarks }}</td>
           </tr>
-          {% comment %}
-            <tr>
-            <td><i class="material-icons">school</i></td>
-            <td>Class</td>
-            <td>Teacher</td>
-            </tr>
-            {% endcomment %}
-        </table>
-
-        {% if personal_note_filters %}
-          <h3>{% trans 'Statistics on remarks' %}</h3>
-          <table>
-            <thead>
-              <tr>
-                <th>{% trans 'Description' %}</th>
-                <th>{% trans 'Count' %}</th>
-              </tr>
-            </thead>
-
-            <tbody>
-              {% for note_filter in personal_note_filters %}
-                <tr>
-                  <td>{{ note_filter.description }}</td>
-                  {% with "_personal_notes_with_"|add:note_filter.identifier as identifier %}
-                    <td>{{ person|get_dict:identifier }}</td>
-                  {% endwith %}
-                </tr>
-              {% endfor %}
-            </rbody>
-          </table>
         {% endif %}
+      {% endfor %}
+      </tbody>
+    </table>
 
-        <h3>{% trans 'Absences and tardiness' %}</h3>
-        <table>
-          <thead>
-            <tr>
-              <th>{% trans 'Absences' %}</th>
-	      <th>{% trans 'Unexcused' %}</th>
-              <th>{% trans 'Tardiness' %}</th>
-            </tr>
-          </thead>
-
-          <tbody>
-            <tr>
-              <td>{{ person.absences_count }}</td>
-              <td>{{ person.unexcused }}</td>
-              <td>{{ person.tardiness }}</td>
-            </tr>
-          </tbody>
-        </table>
-
-        <h3>{% trans 'Relevant personal notes' %}</h3>
-        <table>
-          <thead>
-            <tr>
-              <th>{% trans 'Date' %}</th>
-              <th>{% trans 'Pe.' %}</th>
-              <th>{% trans 'Subj.' %}</th>
-              <th>{% trans 'Te.' %}</th>
-              <th>{% trans 'Absent' %}</th>
-              <th>{% trans 'Tard.' %}</th>
-              <th>{% trans 'Remarks' %}</th>
-            </tr>
-          </thead>
+    <div class="page-break">&nbsp;</div>
 
-          <tbody>
-            {% for note in person.personal_notes.all %}
-              {% if note.absent or note.late or note.remarks %}
-                {% period_to_date note.week note.lesson_period.period as note_date %}
-                <tr>
-                  <td>{{ note_date }}</td>
-                  <td>{{ note.lesson_period.period.period }}</td>
-                  <td>{{ note.lesson_period.get_subject.short_name }} </td>
-                  <td>{{ note.lesson_period.get_teachers.first.short_name }}</td>
-                  <td>
-                    {% if note.absent %}
-                      {% trans 'Yes' %}
-                      {% if note.escused %}
-                        ({% trans 'e' %})
-                      {% endif %}
-                    {% endif %}
-                  </td>
-                  <td>
-                    {% if note.late %}
-                      {{ note.late }}
-                    {% endif %}
-                  </td>
-                  <td>{{ note.remarks }}</td>
-                </tr>
-              {% endif %}
-            {% endfor %}
-          </tbody>
-        </table>
-      </section>
-    {% endfor %}
+  {% endfor %}
 
-    {% for week in weeks %}
-      <section class="sheet padding-10mm smallprint">
-        <h2>{% trans 'Lesson documentation for calendar week' %} {{ week.week }}</h2>
+  {% for week in weeks %}
+    <h4>{% trans 'Lesson documentation for week' %} {{ week.week }}</h4>
 
-        <table>
-          <thead>
-            <tr>
-              <th></th>
-              <th>{% trans 'Pe.' %}</th>
-              <th>{% trans 'Subj.' %}</th>
-              <th>{% trans 'Subs.' %}</th>
-              <th>{% trans 'Lesson topic' %}</th>
-              <th>{% trans 'Homework' %}</th>
-              <th>{% trans 'Notes' %}</th>
-              <th>{% trans 'Te.' %}</th>
-            </tr>
-          </thead>
-          <tbody>
-            {% for day in week %}
-              {% with periods_by_day|get_dict:day as periods %}
-                {% for period, documentations, notes, substitution in periods %}
-                  <tr class="
+    <table class="small-print">
+      <thead>
+      <tr>
+        <th></th>
+        <th>{% trans 'Pe.' %}</th>
+        <th>{% trans 'Subj.' %}</th>
+        <th>{% trans 'Lesson topic' %}</th>
+        <th>{% trans 'Homework' %}</th>
+        <th>{% trans 'Notes' %}</th>
+        <th>{% trans 'Te.' %}</th>
+      </tr>
+      </thead>
+      <tbody>
+      {% for day in week %}
+        {% with periods_by_day|get_dict:day as periods %}
+          {% for period, documentations, notes, substitution in periods %}
+            <tr class="
                     {% if substitution %}
                       {% if substitution.cancelled %}
                         lesson-cancelled
@@ -291,55 +322,62 @@
                       lessons-day-first
                     {% endif %}
                   ">
-                    {% if forloop.first %}
-                      <th rowspan="{{ periods|length }}" class="lessons-day-head">{{ day }}</th>
-                    {% endif %}
-                    <td class="lesson-pe">{{ period.period.period }}</td>
-                    <td class="lesson-subj">{{ period.lesson.subject.short_name }}</td>
-                    <td class="lesson-subs">{{ substitution.subject.short_name }}</td>
-                    <td class="lesson-topic">
-                      {% if substitution.cancelled %}
-                        {% trans 'Lesson cancelled' %}
-                      {% else %}
-                        {{ documentations.0.topic }}
-                      {% endif %}
-                    </td>
-                    <td class="lesson-homework">{{ documentations.0.homework }}</td>
-                    <td class="lesson-notes">
-                      {% for note in notes %}
-                        {% if note.absent %}
-                          <span class="lesson-note-absent">
-                            {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}.
-                            {% if note.excused %}
-                              <span class="lesson-note-excused">
+              {% if forloop.first %}
+                <th rowspan="{{ periods|length }}" class="lessons-day-head">{{ day }}</th>
+              {% endif %}
+              <td class="lesson-pe">{{ period.period.period }}</td>
+              <td class="lesson-subj">
+                {% if substitution %}
+                  {% include "chronos/partials/subs/subject.html" with type="substitution" el=substitution %}
+                {% else %}
+                  {% include "chronos/partials/subject.html" with subject=period.lesson.subject %}
+                {% endif %}
+              </td>
+              <td class="lesson-topic">
+                {% if substitution.cancelled %}
+                  {% trans 'Lesson cancelled' %}
+                {% else %}
+                  {{ documentations.0.topic }}
+                {% endif %}
+              </td>
+              <td class="lesson-homework">{{ documentations.0.homework }}</td>
+              <td class="lesson-notes">
+                {% for note in notes %}
+                  {% if note.absent %}
+                    <span class="lesson-note-absent">
+                      {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}.
+                      {% if note.excused %}
+                        <span class="lesson-note-excused">
                                ({% trans 'e' %})
                               </span>
-                            {% endif %}
-                        {% endif %}
-                        {% if note.late %}
-                          <span class="lesson-note-late">
-                            {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}.
-                            ({{ note.late }}′)
-                            {% if note.excused %}
-                              <span class="lesson-note-excused">
+                      {% endif %}
+                      </span>
+                  {% endif %}
+                  {% if note.late %}
+                    <span class="lesson-note-late">
+                      {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}.
+                      ({{ note.late }}′)
+                      {% if note.excused %}
+                        <span class="lesson-note-excused">
                                ({% trans 'e' %})
                               </span>
-                            {% endif %}
-                        {% endif %}
-                      {% endfor %}
-                    </td>
-                    <td class="lesson-te">
-                      {% if documentations.0.topic %}
-                        {{ substitution.teachers.first.short_name|default:period.lesson.teachers.first.short_name }}
                       {% endif %}
-                    </td>
-                  </tr>
+                      </span>
+                  {% endif %}
                 {% endfor %}
-              {% endwith %}
-            {% endfor %}
-          </tbody>
-        </table>
-      </section>
-    {% endfor %}
-  </body>
-</html>
+              </td>
+              <td class="lesson-te">
+                {% if documentations.0.topic %}
+                  {{ substitution.teachers.first.short_name|default:period.lesson.teachers.first.short_name }}
+                {% endif %}
+              </td>
+            </tr>
+          {% endfor %}
+        {% endwith %}
+      {% endfor %}
+      </tbody>
+    </table>
+
+    <div class="page-break">&nbsp;</div>
+  {% endfor %}
+{% endblock %}
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 7f542e4090af7f48850d9805d1b4b55b1936b82f..7ace9eb8702a9add703df1720e1b56d522604e26 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -66,7 +66,7 @@ def lesson(
 
     if (
         datetime.combine(
-            wanted_week[lesson_period.period.weekday - 1],
+            wanted_week[lesson_period.period.weekday],
             lesson_period.period.time_start,
         )
         > datetime.now()
@@ -80,12 +80,10 @@ def lesson(
 
     context["lesson_period"] = lesson_period
     context["week"] = wanted_week
-    context["day"] = wanted_week[lesson_period.period.weekday - 1]
+    context["day"] = wanted_week[lesson_period.period.weekday]
 
     # Create or get lesson documentation object; can be empty when first opening lesson
-    lesson_documentation, created = LessonDocumentation.objects.get_or_create(
-        lesson_period=lesson_period, week=wanted_week.week
-    )
+    lesson_documentation = lesson_period.get_or_create_lesson_documentation(wanted_week)
     lesson_documentation_form = LessonDocumentationForm(
         request.POST or None,
         instance=lesson_documentation,
@@ -115,7 +113,7 @@ def lesson(
             # Iterate over personal notes and carry changed absences to following lessons
             for instance in instances:
                 instance.person.mark_absent(
-                    wanted_week[lesson_period.period.weekday - 1],
+                    wanted_week[lesson_period.period.weekday],
                     lesson_period.period.period + 1,
                     instance.absent,
                     instance.excused,
@@ -295,7 +293,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
     periods_by_day = {}
     for lesson_period in lesson_periods:
         for week in weeks:
-            day = week[lesson_period.period.weekday - 1]
+            day = week[lesson_period.period.weekday]
 
             if lesson_period.lesson.date_start <= day <= lesson_period.lesson.date_end:
                 documentations = list(