diff --git a/biscuit/apps/alsijil/menus.py b/biscuit/apps/alsijil/menus.py
index fbeb707b19bf6b650a0ec1ba31adbfbb6f2081f5..32c08208ee3042ed6b6cf3d967516f083cb1699c 100644
--- a/biscuit/apps/alsijil/menus.py
+++ b/biscuit/apps/alsijil/menus.py
@@ -6,7 +6,7 @@ MENUS = {
             'name': _('Class register'),
             'url': '#',
             'root': True,
-            'validators': ['menu_generator.validators.is_authenticated'],
+            'validators': ['menu_generator.validators.is_authenticated', 'biscuit.core.util.core_helpers.has_person'],
             'submenu': [
                 {
                     'name': _('Current lesson'),
diff --git a/biscuit/apps/alsijil/templates/alsijil/lesson.html b/biscuit/apps/alsijil/templates/alsijil/lesson.html
index b458c619285f2d3c3d2773e555047a079775c2db..52c71b909fe2be15d7f5a6ee0cdbb04eda932e12 100644
--- a/biscuit/apps/alsijil/templates/alsijil/lesson.html
+++ b/biscuit/apps/alsijil/templates/alsijil/lesson.html
@@ -9,7 +9,17 @@
 {% endblock %}
 
 {% block page_title %}
- {% blocktrans %}Lesson documentation{% endblocktrans %}
+ {{ day }} - 
+
+ {% for group in lesson_period.get_groups.all %}
+  <span>{{ group.short_name }}</span>,
+ {% endfor %},
+
+ {{ lesson_period.get_subject.name }},
+
+ {% for teacher in lesson_period.get_teachers.all %}
+  {{ teacher.short_name }}
+ {% endfor %}
 {% endblock %}
 
 {% block content %}
@@ -19,15 +29,7 @@
 
    <div class="card">
     <div class="card-header bg-light text-dark">
-     {% for group in lesson_period.get_groups.all %}
-      <span>{{ group.short_name }}</span>,
-     {% endfor %}
-
-     {{ lesson_period.get_subject.name }},
-
-     {% for teacher in lesson_period.get_teachers.all %}
-      {{ teacher.short_name }}
-     {% endfor %}
+     {% blocktrans %}Lesson documentation{% endblocktrans %}
     </div>
     <div class="card-body">
      {% csrf_token %}
diff --git a/biscuit/apps/alsijil/views.py b/biscuit/apps/alsijil/views.py
index 5cf9cfb389385c531381859339f88b33ab26e844..6ef5978fd414e9a054e370e4ee0ae4bca0554173 100644
--- a/biscuit/apps/alsijil/views.py
+++ b/biscuit/apps/alsijil/views.py
@@ -5,6 +5,7 @@ from django.contrib.auth.decorators import login_required
 from django.db.models import Q
 from django.http import HttpRequest, HttpResponse
 from django.shortcuts import render
+from django.views.decorators.cache import cache_page
 
 from biscuit.apps.chronos.models import LessonPeriod, TimePeriod
 from biscuit.apps.chronos.util import current_lesson_periods, current_week, week_days
@@ -30,6 +31,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional
 
     context['lesson_period'] = lesson_period
     context['week'] = wanted_week
+    context['day'] = week_days(wanted_week)[lesson_period.period.weekday]
 
     if lesson_period:
         # Create or get lesson documentation object; can be empty when first opening lesson
@@ -40,7 +42,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional
 
         # Create all missing personal notes about members of all groups in lesson
         for group in lesson_period.lesson.groups.all():
-            for person in group.members.all():
+            for person in group.members.filter(is_active=True):
                 note, created = PersonalNote.objects.get_or_create(person=person, lesson_period=lesson_period,
                                                                    week=wanted_week)
 
@@ -63,6 +65,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional
 
 
 @login_required
+@cache_page(60 * 60 * 4)
 def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse:
     context = {}
 
@@ -81,10 +84,11 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse
 
     periods_by_day_unsorted = {}
     if group:
-        for lesson in group.lessons.filter(date_start__lte=week_start, date_end__gte=week_end):
-            for lesson_period in lesson.lesson_periods.all():
-                periods_by_day_unsorted.setdefault(
-                    lesson_period.period.weekday, []).append(lesson_period)
+        for act_group in [group] + list(group.child_groups.all()):
+            for lesson in act_group.lessons.filter(date_start__lte=week_start, date_end__gte=week_end):
+                for lesson_period in lesson.lesson_periods.all():
+                    periods_by_day_unsorted.setdefault(
+                        lesson_period.period.weekday, []).append(lesson_period)
 
     periods_by_day = OrderedDict()
     for weekday, periods in sorted(periods_by_day_unsorted.items()):