diff --git a/apps/member/tables.py b/apps/member/tables.py
index 86fc386a52d9673ed99e5a8e39204316708a68dd..4e09d72e2594e8a0a38c98e3d6c7e094c0e8869d 100644
--- a/apps/member/tables.py
+++ b/apps/member/tables.py
@@ -96,26 +96,30 @@ class MembershipTable(tables.Table):
         t = pretty_money(value)
 
         # If it is required and if the user has the right, the renew button is displayed.
-        if record.club.membership_start is not None:
-            if record.date_start < record.club.membership_start:  # If the renew is available
-                if not Membership.objects.filter(
-                        club=record.club,
-                        user=record.user,
-                        date_start__gte=record.club.membership_start,
-                        date_end__lte=record.club.membership_end,
-                ).exists():  # If the renew is not yet performed
-                    empty_membership = Membership(
-                        club=record.club,
-                        user=record.user,
-                        date_start=date.today(),
-                        date_end=date.today(),
-                        fee=0,
+        if record.club.membership_start is not None \
+                and record.date_start < record.club.membership_start:
+            if not Membership.objects.filter(
+                    club=record.club,
+                    user=record.user,
+                    date_start__gte=record.club.membership_start,
+                    date_end__lte=record.club.membership_end,
+            ).exists():  # If the renew is not yet performed
+                empty_membership = Membership(
+                    club=record.club,
+                    user=record.user,
+                    date_start=date.today(),
+                    date_end=date.today(),
+                    fee=0,
+                )
+                if PermissionBackend.check_perm(get_current_authenticated_user(),
+                                                "member:add_membership", empty_membership):  # If the user has right
+                    renew_url = reverse_lazy('member:club_renew_membership',
+                                             kwargs={"pk": record.pk})
+                    t = format_html(
+                        t + ' <a class="btn btn-sm btn-warning" title="{text}"'
+                        ' href="{renew_url}"><i class="fa fa-repeat"></i></a>',
+                        renew_url=renew_url, text=_("Renew")
                     )
-                    if PermissionBackend.check_perm(get_current_authenticated_user(),
-                                                    "member:add_membership", empty_membership):  # If the user has right
-                        t = format_html(t + ' <a class="btn btn-warning" href="{url}">{text}</a>',
-                                        url=reverse_lazy('member:club_renew_membership',
-                                                         kwargs={"pk": record.pk}), text=_("Renew"))
         return t
 
     def render_roles(self, record):
diff --git a/apps/member/templates/member/add_members.html b/apps/member/templates/member/add_members.html
index 909e72b330c05804a894e9abfdec9fb288dfdba3..fa0a958caf113b826f25216e7f6b7b7f9de783b7 100644
--- a/apps/member/templates/member/add_members.html
+++ b/apps/member/templates/member/add_members.html
@@ -1,72 +1,75 @@
 {% extends "member/base.html" %}
-{% load crispy_forms_tags %}
-{% load static %}
-{% load i18n %}
-{% load pretty_money %}
-
-{% block profile_info %}
-{% include "member/club_info.html" %}
-{% endblock %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
+{% load crispy_forms_tags i18n pretty_money %}
 
 {% block profile_content %}
-    {% if additional_fee_renewal %}
+<div class="card bg-light">
+    <h3 class="card-header text-center">
+        {{ title }}
+    </h3>
+    <div class="card-body">
+        {% if additional_fee_renewal %}
         <div class="alert alert-warning">
             {% if renewal %}
-                {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %}
-                    The user is not a member of the club·s {{ clubs }}. An additional fee of {{ pretty_fee }}
-                    will be charged to renew automatically the membership in this/these club·s.
-                {% endblocktrans %}
+            {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %}
+            The user is not a member of the club·s {{ clubs }}. An additional fee of {{ pretty_fee }}
+            will be charged to renew automatically the membership in this/these club·s.
+            {% endblocktrans %}
             {% else %}
-                {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %}
-                    This club has parents {{ clubs }}. An additional fee of {{ pretty_fee }}
-                    will be charged to adhere automatically to this/these club·s.
-                {% endblocktrans %}
+            {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %}
+            This club has parents {{ clubs }}. An additional fee of {{ pretty_fee }}
+            will be charged to adhere automatically to this/these club·s.
+            {% endblocktrans %}
             {% endif %}
         </div>
-    {% endif %}
+        {% endif %}
 
-    <form method="post" action="">
-        {% csrf_token %}
-        {{ form|crispy }}
-        <button class="btn btn-primary" type="submit">{% trans "Submit" %}</button>
-    </form>
+        <form method="post" action="">
+            {% csrf_token %}
+            {{ form|crispy }}
+            <button class="btn btn-primary" type="submit">{% trans "Submit" %}</button>
+        </form>
+    </div>
+</div>
 {% endblock %}
 
 {% block extrajavascript %}
-    <script>
-        function autocompleted(user) {
-            $("#id_last_name").val(user.last_name);
-            $("#id_first_name").val(user.first_name);
-            $.getJSON("/api/members/profile/" + user.id + "/", function(profile) {
-                let fee = profile.paid ? {{ club.membership_fee_paid }} : {{ club.membership_fee_unpaid }};
-                $("#id_credit_amount").val((fee / 100).toFixed(2));
-            });
-        }
+<script>
+    function autocompleted(user) {
+        $("#id_last_name").val(user.last_name);
+        $("#id_first_name").val(user.first_name);
+        $.getJSON("/api/members/profile/" + user.id + "/", function (profile) {
+            let fee = profile.paid ? "{{ club.membership_fee_paid }}" : "{{ club.membership_fee_unpaid }}";
+            $("#id_credit_amount").val((Number(fee) / 100).toFixed(2));
+        });
+    }
 
-        soge_field = $("#id_soge");
+    soge_field = $("#id_soge");
 
-        function fillFields() {
-            let checked = soge_field.is(':checked');
-            if (!checked) {
-                $("input").attr('disabled', false);
-                $("#id_user").attr('disabled', true);
-                $("select").attr('disabled', false);
-                return;
-            }
+    function fillFields() {
+        let checked = soge_field.is(':checked');
+        if (!checked) {
+            $("input").attr('disabled', false);
+            $("#id_user").attr('disabled', true);
+            $("select").attr('disabled', false);
+            return;
+        }
 
-            let credit_type = $("#id_credit_type");
-            credit_type.attr('disabled', true);
-            credit_type.val(4);
+        let credit_type = $("#id_credit_type");
+        credit_type.attr('disabled', true);
+        credit_type.val(4);
 
-            let credit_amount = $("#id_credit_amount");
-            credit_amount.attr('disabled', true);
-            credit_amount.val('{{ total_fee }}');
+        let credit_amount = $("#id_credit_amount");
+        credit_amount.attr('disabled', true);
+        credit_amount.val('{{ total_fee }}');
 
-            let bank = $("#id_bank");
-            bank.attr('disabled', true);
-            bank.val('Société générale');
-        }
+        let bank = $("#id_bank");
+        bank.attr('disabled', true);
+        bank.val('Société générale');
+    }
 
-        soge_field.change(fillFields);
-    </script>
-{% endblock %}
+    soge_field.change(fillFields);
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/apps/member/templates/member/base.html b/apps/member/templates/member/base.html
index b61d869cc4f751f592944e98c9315dd0fe1d1482..b474f73656ec1ddf39c215a43787ae4383b98c4d 100644
--- a/apps/member/templates/member/base.html
+++ b/apps/member/templates/member/base.html
@@ -2,6 +2,7 @@
 {% comment %}
 SPDX-License-Identifier: GPL-3.0-or-later
 {% endcomment %}
+{% load i18n perms %}
 {% block contenttitle %}{% endblock %}
 
 {# Use a fluid-width container #}
@@ -11,24 +12,74 @@ SPDX-License-Identifier: GPL-3.0-or-later
 <div class="row mt-4">
     <div class="col-xl-4">
         {% block profile_info %}
-        {% include "member/profile_info.html" %}
-        {% endblock %}
+        <div class="card bg-light">
+            <h4 class="card-header text-center">
+                {% if user_object %}
+                {% trans "Account #" %}{{ user_object.pk }}
+                {% elif club %}
+                Club {{ club.name }}
+                {% endif %}
+            </h4>
+            <div class="text-center">
+                {% if user_object %}
+                <a href="{% url 'member:user_update_pic' user_object.pk  %}">
+                    <img src="{{ user_object.note.display_image.url }}" class="img-thumbnail mt-2">
+                </a>
+                {% elif club %}
+                <a href="{% url 'member:club_update_pic' club.pk  %}">
+                    <img src="{{ club.note.display_image.url }}" class="img-thumbnail mt-2">
+                </a>
+                {% endif %}
+            </div>
+            <div class="card-body" id="profile_infos">
+                {% if user_object %}
+                {% include "member/includes/profile_info.html" %}
+                {% elif club %}
+                {% include "member/includes/club_info.html" %}
+                {% endif %}
+                {% endblock %}
+            </div>
+            <div class="card-footer">
+                {% if user_object %}
+                <a class="btn btn-sm btn-secondary" href="{% url 'member:user_update_profile' user_object.pk %}">
+                    <i class="fa fa-edit"></i> {% trans 'Update Profile' %}
+                </a>
+                {% url 'member:user_detail' user_object.pk as user_profile_url %}
+                {% if request.path_info != user_profile_url %}
+                <a class="btn btn-sm btn-primary" href="{{ user_profile_url }}">{% trans 'View Profile' %}</a>
+                {% endif %}
+                {% elif club and not club.weiclub %}
+                {% if can_add_members %}
+                <a class="btn btn-sm btn-success" href="{% url 'member:club_add_member' club_pk=club.pk %}"
+                    data-turbolinks="false"> {% trans "Add member" %}</a>
+                {% endif %}
+                {% if ".change_"|has_perm:club %}
+                <a class="btn btn-sm btn-secondary" href="{% url 'member:club_update' pk=club.pk %}"
+                    data-turbolinks="false">
+                    <i class="fa fa-edit"></i> {% trans 'Update Profile' %}
+                </a>
+                {% endif %}
+                {% url 'member:club_detail' club.pk as club_detail_url %}
+                {% if request.path_info != club_detail_url %}
+                <a class="btn btn-sm btn-primary" href="{{ club_detail_url }}">{% trans 'View Profile' %}</a>
+                {% endif %}
+                {% endif %}
+            </div>
+        </div>
     </div>
     <div class="col-xl-8">
-        {% block profile_content %}
-        {% include "member/profile_tables.html" %}
-        {% endblock %}
+        {% block profile_content %}{% endblock %}
     </div>
 </div>
 {% endblock %}
 
 {% block extrajavascript %}
+{% if object %}
 <script>
-    {% if object %}
     function refreshHistory() {
         $("#history_list").load("{% url 'member:user_detail' pk=object.pk %} #history_list");
         $("#profile_infos").load("{% url 'member:user_detail' pk=object.pk %} #profile_infos");
     }
-    {% endif %}
 </script>
+{% endif %}
 {% endblock %}
\ No newline at end of file
diff --git a/apps/member/templates/member/club_alias.html b/apps/member/templates/member/club_alias.html
index 60e2bef043774cecbecd8471afbd7c0a7c9ab452..d80dfa0b62d605144f94b9ed90e534e55e5b104e 100644
--- a/apps/member/templates/member/club_alias.html
+++ b/apps/member/templates/member/club_alias.html
@@ -1,4 +1,7 @@
-{% extends "member/club_detail.html" %}
+{% extends "member/base.html" %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
 {% load static django_tables2 i18n %}
 
 {% block profile_content %}
diff --git a/apps/member/templates/member/club_detail.html b/apps/member/templates/member/club_detail.html
index c3afee7b8e4356e9471e114113c76284abfc48e1..b6cd1e33cb45ef48400d24232949d0b86b931222 100644
--- a/apps/member/templates/member/club_detail.html
+++ b/apps/member/templates/member/club_detail.html
@@ -1,11 +1,50 @@
 {% extends "member/base.html" %}
-
-{% block profile_info %}
-{% include "member/club_info.html" %}
-{% endblock %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
+{% load render_table from django_tables2 %}
+{% load i18n perms %}
 
 {% block profile_content %}
-{% include "member/club_tables.html" %}
+{% if managers.data %}
+<div class="card">
+    <div class="card-header position-relative" id="clubListHeading">
+        <a class="font-weight-bold">
+            <i class="fa fa-users"></i> {% trans "Club managers" %}
+        </a>
+    </div>
+    {% render_table managers %}
+</div>
+
+<hr>
+{% endif %}
+
+{% if member_list.data %}
+<div class="card">
+    <div class="card-header position-relative" id="clubListHeading">
+        <a class="stretched-link font-weight-bold" href="{% url 'member:club_members' pk=club.pk %}">
+            <i class="fa fa-users"></i> {% trans "Club members" %}
+        </a>
+    </div>
+    {% render_table member_list %}
+</div>
+
+<hr>
+{% endif %}
+
+{% if history_list.data %}
+<div class="card">
+    <div class="card-header position-relative" id="historyListHeading">
+        <a class="stretched-link font-weight-bold" {% if "note.view_note"|has_perm:club.note %}
+            href="{% url 'note:transactions' pk=club.note.pk %}" {% endif %}>
+            <i class="fa fa-euro"></i> {% trans "Transaction history" %}
+        </a>
+    </div>
+    <div id="history_list">
+        {% render_table history_list %}
+    </div>
+</div>
+{% endif %}
 {% endblock %}
 
 {% block extrajavascript %}
diff --git a/apps/member/templates/member/club_form.html b/apps/member/templates/member/club_form.html
index fc4e79e302366ba791889698c2acf13b5cf6d8d9..bd44ff161c56de8182e0577a2dbd7c1b3a850c0b 100644
--- a/apps/member/templates/member/club_form.html
+++ b/apps/member/templates/member/club_form.html
@@ -1,11 +1,11 @@
-{% extends "base.html" %}
+{% extends "member/base.html" %}
 {% comment %}
 SPDX-License-Identifier: GPL-3.0-or-later
 {% endcomment %}
 {% load i18n crispy_forms_tags %}
 {% block contenttitle %}{% endblock %}
 
-{% block content %}
+{% block profile_content %}
 <div class="card bg-light">
     <h3 class="card-header text-center">
         {{ title }}
diff --git a/apps/member/templates/member/club_info.html b/apps/member/templates/member/club_info.html
deleted file mode 100644
index bc76385b16447148fe60a57d0b79ba987811c54e..0000000000000000000000000000000000000000
--- a/apps/member/templates/member/club_info.html
+++ /dev/null
@@ -1,80 +0,0 @@
-{% load i18n pretty_money perms %}
-
-<div class="card bg-light">
-    <h4 class="card-header text-center">
-        Club {{ club.name }}
-    </h4>
-    <div class="card-top text-center">
-        <a href="{% url 'member:club_update_pic' club.pk  %}">
-            <img src="{{ club.note.display_image.url }}" class="img-thumbnail mt-2">
-        </a>
-    </div>
-    <div class="card-body" id="profile_infos">
-        <dl class="row">
-            <dt class="col-xl-6">{% trans 'name'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.name }}</dd>
-
-            {% if club.parent_club %}
-            <dt class="col-xl-6">
-                <a href="{% url 'member:club_detail' club.parent_club.pk %}">{% trans 'Club Parent'|capfirst %}</a>
-            </dt>
-            <dd class="col-xl-6"> {{ club.parent_club.name }}</dd>
-            {% endif %}
-
-            {% if club.require_memberships %}
-            {% if club.membership_start %}
-            <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.membership_start }}</dd>
-            {% endif %}
-
-            {% if club.membership_end %}
-            <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.membership_end }}</dd>
-            {% endif %}
-
-            {% if club.membership_duration %}
-            <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.membership_duration }} {% trans "days" %}</dd>
-            {% endif %}
-
-            {% if club.membership_fee_paid == club.membership_fee_unpaid %}
-            <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd>
-            {% else %}
-            <dt class="col-xl-6">{% trans 'membership fee (paid students)'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd>
-
-            <dt class="col-xl-6">{% trans 'membership fee (unpaid students)'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.membership_fee_unpaid|pretty_money }}</dd>
-            {% endif %}
-            {% endif %}
-
-            {% if "note.view_note"|has_perm:club.note %}
-            <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ club.note.balance | pretty_money }}</dd>
-            {% endif %}
-
-            <dt class="col-xl-6"><a href="{% url 'member:club_alias' club.pk %}">{% trans 'aliases'|capfirst %}</a></dt>
-            <dd class="col-xl-6 text-truncate">{{ club.note.alias_set.all|join:", " }}</dd>
-
-            <dt class="col-xl-4">{% trans 'email'|capfirst %}</dt>
-            <dd class="col-xl-8"><a href="mailto:{{ club.email }}">{{ club.email }}</a></dd>
-        </dl>
-    </div>
-    {% if not club.weiclub %}
-    <div class="card-footer text-center">
-        {% if can_add_members %}
-        <a class="btn btn-primary btn-sm my-1" href="{% url 'member:club_add_member' club_pk=club.pk %}"
-            data-turbolinks="false"> {% trans "Add member" %}</a>
-        {% endif %}
-        {% if ".change_"|has_perm:club %}
-        <a class="btn btn-primary btn-sm my-1" href="{% url 'member:club_update' pk=club.pk %}" data-turbolinks="false">
-            {% trans "Edit" %}</a>
-        {% endif %}
-        {% url 'member:club_detail' club.pk as club_detail_url %}
-        {%if request.path_info != club_detail_url %}
-        <a class="btn btn-primary btn-sm my-1" href="{{ club_detail_url }}">{% trans 'View Profile' %}</a>
-        {% endif %}
-    </div>
-    {% endif %}
-</div>
\ No newline at end of file
diff --git a/apps/member/templates/member/club_list.html b/apps/member/templates/member/club_list.html
index f6d039e746dccd3e7b5120a520a68de3b3d9a020..66863a3c7436cb5f3984fb4ff8f9dedfac6292ae 100644
--- a/apps/member/templates/member/club_list.html
+++ b/apps/member/templates/member/club_list.html
@@ -13,4 +13,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
 
 {# Search panel #}
 {{ block.super }}
-{% endblock %}
+{% endblock %}
\ No newline at end of file
diff --git a/apps/member/templates/member/club_members.html b/apps/member/templates/member/club_members.html
index 9faff271f1f10618db1a4403ea37b20b753a6401..0da9524273fc79d7f8ba1648d0ed31cf4875093b 100644
--- a/apps/member/templates/member/club_members.html
+++ b/apps/member/templates/member/club_members.html
@@ -2,68 +2,65 @@
 {% load i18n %}
 {% load render_table from django_tables2 %}
 
-{% block profile_info %}
-    {% include "member/club_info.html" %}
-{% endblock %}
-
 {% block profile_content %}
-    <input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note ...">
-    <div class="form-group">
+<div class="card bg-light">
+    <h3 class="card-header text-center">
+        {{ title }}
+    </h3>
+    <div class="card-body">
+        <input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note…">
         <div class="form-check">
             <label class="form-check-label" for="only_active">
                 <input type="checkbox" class="checkboxinput form-check-input" id="only_active"
-                       {% if only_active %}checked{% endif %}>
+                    {% if only_active %}checked{% endif %}>
                 {% trans "Display only active memberships" %}
             </label>
         </div>
-    </div>
-    <div id="div_id_roles" class="form-group">
-        <label for="id_roles" class="col-form-label">{% trans "Filter roles:" %}</label>
-        <div class="">
+        <div id="div_id_roles">
+            <label for="roles" class="col-form-label">{% trans "Filter roles:" %}</label>
             <select name="roles" class="selectmultiple form-control" id="roles" multiple="">
                 {% for role in applicable_roles %}
-                    <option value="{{ role.id }}" selected>{{ role.name }}</option>
+                <option value="{{ role.id }}" selected>{{ role.name }}</option>
                 {% endfor %}
             </select>
         </div>
     </div>
-    <hr>
-
     <div id="memberships_table">
         {% if table.data %}
-            {% render_table table %}
+        {% render_table table %}
         {% else %}
-            <div class="alert alert-warning">
-                {% trans "There is no membership found with this pattern." %}
-            </div>
+        <div class="alert alert-warning">
+            {% trans "There is no membership found with this pattern." %}
+        </div>
         {% endif %}
     </div>
+</div>
 {% endblock %}
 
 {% block extrajavascript %}
-    <script type="text/javascript">
-        $(document).ready(function () {
-            let searchbar_obj = $("#searchbar");
-            let only_active_obj = $("#only_active");
-            let roles_obj = $("#roles");
+<script type="text/javascript">
+    $(document).ready(function () {
+        let searchbar_obj = $("#searchbar");
+        let only_active_obj = $("#only_active");
+        let roles_obj = $("#roles");
 
-            function reloadTable() {
-                let pattern = searchbar_obj.val();
+        function reloadTable() {
+            let pattern = searchbar_obj.val();
 
-                let roles = [];
-                $("#roles option:selected").each(function() {
-                    roles.push($(this).val());
-                });
-                let roles_str = roles.join(',');
+            let roles = [];
+            $("#roles option:selected").each(function () {
+                roles.push($(this).val());
+            });
+            let roles_str = roles.join(',');
 
-                $("#memberships_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20")
-                    + "&only_active=" + (only_active_obj.is(':checked') ? '1' : '0')
-                    + "&roles=" + roles_str + " #memberships_table");
-            }
+            $("#memberships_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") +
+                "&only_active=" + (only_active_obj.is(':checked') ? '1' : '0') +
+                "&roles=" + roles_str + " #memberships_table");
+        }
 
-            searchbar_obj.keyup(reloadTable);
-            only_active_obj.change(reloadTable);
-            roles_obj.change(reloadTable);
-        });
-    </script>
-{% endblock %}
+        searchbar_obj.keyup(reloadTable);
+        only_active_obj.change(reloadTable);
+        roles_obj.change(reloadTable);
+    });
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/apps/member/templates/member/club_picture_update.html b/apps/member/templates/member/club_picture_update.html
deleted file mode 100644
index 358fdd6e882399c2cb9654e9f650f35ba6d2b554..0000000000000000000000000000000000000000
--- a/apps/member/templates/member/club_picture_update.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends "member/club_detail.html" %}
-
-{% block profile_content%}
-{% include "member/picture_update.html" %}
-{% endblock%}
diff --git a/apps/member/templates/member/club_tables.html b/apps/member/templates/member/club_tables.html
deleted file mode 100644
index 063c00c5d9561d2f7acbbd1d6f12bf5125aa915d..0000000000000000000000000000000000000000
--- a/apps/member/templates/member/club_tables.html
+++ /dev/null
@@ -1,42 +0,0 @@
-{% load render_table from django_tables2 %}
-{% load i18n %}
-{% load perms %}
-
-{% if managers.data %}
-    <div class="card">
-        <div class="card-header position-relative" id="clubListHeading">
-            <a class="font-weight-bold">
-                <i class="fa fa-users"></i> {% trans "Club managers" %}
-            </a>
-        </div>
-        {% render_table managers %}
-    </div>
-
-    <hr>
-{% endif %}
-
-{% if member_list.data %}
-    <div class="card">
-        <div class="card-header position-relative" id="clubListHeading">
-            <a class="stretched-link font-weight-bold" href="{% url 'member:club_members' pk=club.pk %}">
-                <i class="fa fa-users"></i> {% trans "Club members" %}
-            </a>
-        </div>
-        {% render_table member_list %}
-    </div>
-
-    <hr>
-{% endif %}
-
-{% if history_list.data %}
-    <div class="card">
-        <div class="card-header position-relative" id="historyListHeading">
-            <a class="stretched-link font-weight-bold" {% if "note.view_note"|has_perm:club.note %} href="{% url 'note:transactions' pk=club.note.pk %}" {% endif %}>
-                <i class="fa fa-euro"></i> {% trans "Transaction history" %}
-            </a>
-        </div>
-        <div id="history_list">
-            {% render_table history_list %}
-        </div>
-    </div>
-{% endif %}
diff --git a/apps/member/templates/member/includes/club_info.html b/apps/member/templates/member/includes/club_info.html
new file mode 100644
index 0000000000000000000000000000000000000000..271083b83f77d3b68c13e2f3ffe9f06ec8d6fdc8
--- /dev/null
+++ b/apps/member/templates/member/includes/club_info.html
@@ -0,0 +1,56 @@
+{% load i18n pretty_money perms %}
+
+<dl class="row">
+    <dt class="col-xl-6">{% trans 'name'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.name }}</dd>
+
+    {% if club.parent_club %}
+    <dt class="col-xl-6">
+        <a href="{% url 'member:club_detail' club.parent_club.pk %}">{% trans 'Club Parent'|capfirst %}</a>
+    </dt>
+    <dd class="col-xl-6"> {{ club.parent_club.name }}</dd>
+    {% endif %}
+
+    {% if club.require_memberships %}
+    {% if club.membership_start %}
+    <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.membership_start }}</dd>
+    {% endif %}
+
+    {% if club.membership_end %}
+    <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.membership_end }}</dd>
+    {% endif %}
+
+    {% if club.membership_duration %}
+    <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.membership_duration }} {% trans "days" %}</dd>
+    {% endif %}
+
+    {% if club.membership_fee_paid == club.membership_fee_unpaid %}
+    <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd>
+    {% else %}
+    <dt class="col-xl-6">{% trans 'membership fee (paid students)'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd>
+
+    <dt class="col-xl-6">{% trans 'membership fee (unpaid students)'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.membership_fee_unpaid|pretty_money }}</dd>
+    {% endif %}
+    {% endif %}
+
+    {% if "note.view_note"|has_perm:club.note %}
+    <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ club.note.balance | pretty_money }}</dd>
+    {% endif %}
+
+    <dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt>
+    <dd class="col-xl-6">
+        <a class="small" href="{% url 'member:club_alias' club.pk %}">
+            {% trans 'Edit aliases' %} ({{ club.note.alias_set.all|length }})
+        </a>
+    </dd>
+
+    <dt class="col-xl-4">{% trans 'email'|capfirst %}</dt>
+    <dd class="col-xl-8"><a href="mailto:{{ club.email }}">{{ club.email }}</a></dd>
+</dl>
\ No newline at end of file
diff --git a/apps/member/templates/member/includes/profile_info.html b/apps/member/templates/member/includes/profile_info.html
new file mode 100644
index 0000000000000000000000000000000000000000..ba12572fe0b2b743355fb5f69f3a8254a567b173
--- /dev/null
+++ b/apps/member/templates/member/includes/profile_info.html
@@ -0,0 +1,52 @@
+{% load i18n pretty_money perms %}
+
+<dl class="row">
+    <dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt>
+    <dd class="col-xl-6">{{ user_object.last_name }} {{ user_object.first_name }}</dd>
+
+    <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ user_object.username }}</dd>
+
+    {% if user_object.pk == user.pk %}
+    <dt class="col-xl-6">{% trans 'password'|capfirst %}</dt>
+    <dd class="col-xl-6">
+        <a class="small" href="{% url 'password_change' %}">
+            {% trans 'Change password' %}
+        </a>
+    </dd>
+    {% endif %}
+
+    <dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt>
+    <dd class="col-xl-6">
+        <a class="small" href="{% url 'member:user_alias' user_object.pk %}">
+            {% trans 'Edit aliases' %} ({{ user_object.note.alias_set.all|length }})
+        </a>
+    </dd>
+
+    <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ user_object.profile.section }}</dd>
+
+    <dt class="col-xl-6">{% trans 'email'|capfirst %}</dt>
+    <dd class="col-xl-6"><a href="mailto:{{ user_object.email }}">{{ user_object.email }}</a></dd>
+
+    <dt class="col-xl-6">{% trans 'phone number'|capfirst %}</dt>
+    <dd class="col-xl-6"><a href="tel:{{ user_object.profile.phone_number }}">{{ user_object.profile.phone_number }}</a>
+    </dd>
+
+    <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ user_object.profile.address }}</dd>
+
+    {% if "note.view_note"|has_perm:user_object.note %}
+    <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ user_object.note.balance | pretty_money }}</dd>
+
+    <dt class="col-xl-6">{% trans 'paid'|capfirst %}</dt>
+    <dd class="col-xl-6">{{ user_object.profile.paid|yesno }}</dd>
+    {% endif %}
+</dl>
+
+{% if user_object.pk == user_object.pk %}
+<a class="small float-right text-decoration-none" href="{% url 'member:auth_token' %}">
+    {% trans 'Manage auth token' %}
+</a>
+{% endif %}
\ No newline at end of file
diff --git a/apps/member/templates/member/manage_auth_tokens.html b/apps/member/templates/member/manage_auth_tokens.html
index 0103fbbba7ff17d4c9650cd67806b9e556ffeb96..473286c1e07b1a0c4985596e2191dc99582e5a07 100644
--- a/apps/member/templates/member/manage_auth_tokens.html
+++ b/apps/member/templates/member/manage_auth_tokens.html
@@ -1,8 +1,11 @@
-{% extends "base.html" %}
-{% load i18n static pretty_money django_tables2 %}
+{% extends "member/base.html" %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
+{% load i18n %}
 
 {% block content %}
-    <div class="alert alert-info">
+<div class="alert alert-info">
     <h4>À quoi sert un jeton d'authentification ?</h4>
 
     Un jeton vous permet de vous connecter à <a href="/api/">l'API de la Note Kfet</a>.<br />
@@ -10,24 +13,24 @@
     pour pouvoir vous identifier.<br /><br />
 
     Une documentation de l'API arrivera ultérieurement.
-    </div>
+</div>
 
-    <div class="alert alert-info">
-        <strong>{%trans  'Token' %} :</strong>
-        {% if 'show' in request.GET %}
-            {{ token.key }} (<a href="?">cacher</a>)
-        {% else %}
-            <em>caché</em> (<a href="?show">montrer</a>)
-        {% endif %}
-        <br />
-        <strong>{%trans  'Created' %} :</strong> {{ token.created }}
-    </div>
+<div class="alert alert-info">
+    <strong>{%trans  'Token' %} :</strong>
+    {% if 'show' in request.GET %}
+    {{ token.key }} (<a href="?">cacher</a>)
+    {% else %}
+    <em>caché</em> (<a href="?show">montrer</a>)
+    {% endif %}
+    <br />
+    <strong>{%trans  'Created' %} :</strong> {{ token.created }}
+</div>
 
-    <div class="alert alert-warning">
-        <strong>Attention :</strong> regénérer le jeton va révoquer tout accès autorisé à l'API via ce jeton !
-    </div>
+<div class="alert alert-warning">
+    <strong>Attention :</strong> regénérer le jeton va révoquer tout accès autorisé à l'API via ce jeton !
+</div>
 
-    <a href="?regenerate">
-        <button class="btn btn-primary">{% trans 'Regenerate token' %}</button>
-    </a>
-{% endblock %}
+<a href="?regenerate">
+    <button class="btn btn-primary">{% trans 'Regenerate token' %}</button>
+</a>
+{% endblock %}
\ No newline at end of file
diff --git a/apps/member/templates/member/picture_update.html b/apps/member/templates/member/picture_update.html
index f0c43e47c52c659e2d308a48647486a0b7db26fc..41568cfbe05df5680b12214bd86a28498c6a26b8 100644
--- a/apps/member/templates/member/picture_update.html
+++ b/apps/member/templates/member/picture_update.html
@@ -1,95 +1,104 @@
+{% extends "member/base.html" %}
 {% load i18n crispy_forms_tags %}
+
 {% block profile_content %}
-<div class="text-center">
-<form method="post" enctype="multipart/form-data" id="formUpload">
-  {% csrf_token %}
-  {{ form |crispy }}
-</form>
-</div>
-<!-- MODAL TO CROP THE IMAGE -->
-<div class="modal fade" id="modalCrop">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-body">
-        <img src="" id="modal-image" style="max-width: 100%;">
-      </div>
-      <div class="modal-footer">
-        <div class="btn-group pull-left" role="group">
-          <button type="button" class="btn btn-default" id="js-zoom-in">
-            <span class="glyphicon glyphicon-zoom-in"></span>
-          </button>
-          <button type="button" class="btn btn-default js-zoom-out">
-            <span class="glyphicon glyphicon-zoom-out"></span>
-          </button>
+<div class="card bg-light">
+  <h3 class="card-header text-center">
+    {{ title }}
+  </h3>
+  <div class="card-body">
+    <div class="text-center">
+      <form method="post" enctype="multipart/form-data" id="formUpload">
+        {% csrf_token %}
+        {{ form |crispy }}
+      </form>
+    </div>
+    <!-- MODAL TO CROP THE IMAGE -->
+    <div class="modal fade" id="modalCrop">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-body">
+            <img src="" id="modal-image" style="max-width: 100%;">
+          </div>
+          <div class="modal-footer">
+            <div class="btn-group pull-left" role="group">
+              <button type="button" class="btn btn-default" id="js-zoom-in">
+                <span class="glyphicon glyphicon-zoom-in"></span>
+              </button>
+              <button type="button" class="btn btn-default js-zoom-out">
+                <span class="glyphicon glyphicon-zoom-out"></span>
+              </button>
+            </div>
+            <button type="button" class="btn btn-default" data-dismiss="modal">Nevermind</button>
+            <button type="button" class="btn btn-primary js-crop-and-upload">Crop and upload</button>
+          </div>
         </div>
-        <button type="button" class="btn btn-default" data-dismiss="modal">Nevermind</button>
-        <button type="button" class="btn btn-primary js-crop-and-upload">Crop and upload</button>
       </div>
     </div>
   </div>
 </div>
 {% endblock %}
+
 {% block extracss %}
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.css" rel="stylesheet">
+<link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.css" rel="stylesheet">
 {% endblock %}
 
 {% block extrajavascript%}
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.js"></script>
-    <script src="https://cdn.jsdelivr.net/npm/jquery-cropper@1.0.1/dist/jquery-cropper.min.js"></script>
-    <script>
-     $(function () {
-
-         /* SCRIPT TO OPEN THE MODAL WITH THE PREVIEW */
-         $("#id_image").change(function (e) {
-             if (this.files && this.files[0]) {
-                 var reader = new FileReader();
-                 reader.onload = function (e) {
-                     $("#modal-image").attr("src", e.target.result);
-                     $("#modalCrop").modal("show");
-                 }
-                 reader.readAsDataURL(this.files[0]);
-             }
-         });
+<script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.js"></script>
+<script src="https://cdn.jsdelivr.net/npm/jquery-cropper@1.0.1/dist/jquery-cropper.min.js"></script>
+<script>
+  $(function () {
 
-         /* SCRIPTS TO HANDLE THE CROPPER BOX */
-         var $image = $("#modal-image");
-         var cropBoxData;
-         var canvasData;
-         $("#modalCrop").on("shown.bs.modal", function () {
-             $image.cropper({
-                 viewMode: 1,
-                 aspectRatio: 1/1,
-                 minCropBoxWidth: 200,
-                 minCropBoxHeight: 200,
-                 ready: function () {
-                     $image.cropper("setCanvasData", canvasData);
-                     $image.cropper("setCropBoxData", cropBoxData);
-                 }
-             });
-         }).on("hidden.bs.modal", function () {
-             cropBoxData = $image.cropper("getCropBoxData");
-             canvasData = $image.cropper("getCanvasData");
-             $image.cropper("destroy");
-         });
+    /* SCRIPT TO OPEN THE MODAL WITH THE PREVIEW */
+    $("#id_image").change(function (e) {
+      if (this.files && this.files[0]) {
+        var reader = new FileReader();
+        reader.onload = function (e) {
+          $("#modal-image").attr("src", e.target.result);
+          $("#modalCrop").modal("show");
+        }
+        reader.readAsDataURL(this.files[0]);
+      }
+    });
 
-         $(".js-zoom-in").click(function () {
-             $image.cropper("zoom", 0.1);
-         });
+    /* SCRIPTS TO HANDLE THE CROPPER BOX */
+    var $image = $("#modal-image");
+    var cropBoxData;
+    var canvasData;
+    $("#modalCrop").on("shown.bs.modal", function () {
+      $image.cropper({
+        viewMode: 1,
+        aspectRatio: 1 / 1,
+        minCropBoxWidth: 200,
+        minCropBoxHeight: 200,
+        ready: function () {
+          $image.cropper("setCanvasData", canvasData);
+          $image.cropper("setCropBoxData", cropBoxData);
+        }
+      });
+    }).on("hidden.bs.modal", function () {
+      cropBoxData = $image.cropper("getCropBoxData");
+      canvasData = $image.cropper("getCanvasData");
+      $image.cropper("destroy");
+    });
 
-         $(".js-zoom-out").click(function () {
-             $image.cropper("zoom", -0.1);
-         });
+    $(".js-zoom-in").click(function () {
+      $image.cropper("zoom", 0.1);
+    });
 
-         /* SCRIPT TO COLLECT THE DATA AND POST TO THE SERVER */
-         $(".js-crop-and-upload").click(function () {
-             var cropData = $image.cropper("getData");
-             $("#id_x").val(cropData["x"]);
-             $("#id_y").val(cropData["y"]);
-             $("#id_height").val(cropData["height"]);
-             $("#id_width").val(cropData["width"]);
-             $("#formUpload").submit();
-         });
+    $(".js-zoom-out").click(function () {
+      $image.cropper("zoom", -0.1);
+    });
 
-     });
-    </script>
-{% endblock %}
+    /* SCRIPT TO COLLECT THE DATA AND POST TO THE SERVER */
+    $(".js-crop-and-upload").click(function () {
+      var cropData = $image.cropper("getData");
+      $("#id_x").val(cropData["x"]);
+      $("#id_y").val(cropData["y"]);
+      $("#id_height").val(cropData["height"]);
+      $("#id_width").val(cropData["width"]);
+      $("#formUpload").submit();
+    });
+  });
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/apps/member/templates/member/profile_alias.html b/apps/member/templates/member/profile_alias.html
index ee2369e4bcfa744e337a0508538f3b5f8d4922b8..d80dfa0b62d605144f94b9ed90e534e55e5b104e 100644
--- a/apps/member/templates/member/profile_alias.html
+++ b/apps/member/templates/member/profile_alias.html
@@ -1,4 +1,7 @@
-{% extends "member/profile_detail.html" %}
+{% extends "member/base.html" %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
 {% load static django_tables2 i18n %}
 
 {% block profile_content %}
diff --git a/apps/member/templates/member/profile_detail.html b/apps/member/templates/member/profile_detail.html
index 9df28c9fe365550ace46b55943096073ad2ee591..598b291dd1868ff148ddbd8ef4bb4934bb226318 100644
--- a/apps/member/templates/member/profile_detail.html
+++ b/apps/member/templates/member/profile_detail.html
@@ -1,4 +1,42 @@
 {% extends "member/base.html" %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
+{% load render_table from django_tables2 %}
+{% load i18n perms %}
+
+{% block profile_content %}
+{% if not object.profile.email_confirmed and "member.change_profile_email_confirmed"|has_perm:user_object.profile %}
+<div class="alert alert-warning">
+    {% trans "This user doesn't have confirmed his/her e-mail address." %}
+    <a href="{% url "registration:email_validation_resend" pk=user_object.pk %}">
+        {% trans "Click here to resend a validation link." %}
+    </a>
+</div>
+{% endif %}
+
+<div class="card bg-light mb-3">
+    <div class="card-header position-relative" id="clubListHeading">
+        <a class="font-weight-bold">
+            <i class="fa fa-users"></i> {% trans "View my memberships" %}
+        </a>
+    </div>
+    {% render_table club_list %}
+</div>
+
+<div class="card bg-light">
+    <div class="card-header position-relative" id="historyListHeading">
+        <a class="stretched-link font-weight-bold text-decoration-none"
+            {% if "note.view_note"|has_perm:user_object.note %}
+            href="{% url 'note:transactions' pk=user_object.note.pk %}" {% endif %}>
+            <i class="fa fa-euro"></i> {% trans "Transaction history" %}
+        </a>
+    </div>
+    <div id="history_list">
+        {% render_table history_list %}
+    </div>
+</div>
+{% endblock %}
 
 {% block extrajavascript %}
 <script>
diff --git a/apps/member/templates/member/profile_info.html b/apps/member/templates/member/profile_info.html
deleted file mode 100644
index 3fbf5e3dcc96be54a96eb623e17c94256b2f6122..0000000000000000000000000000000000000000
--- a/apps/member/templates/member/profile_info.html
+++ /dev/null
@@ -1,71 +0,0 @@
-{% load i18n pretty_money perms %}
-
-<div class="card bg-light">
-    <h4 class="card-header text-center">
-        {% trans "Account #" %}{{ user_object.pk }}
-    </h4>
-    <div class="card-top text-center">
-        <a href="{% url 'member:user_update_pic' user_object.pk  %}">
-            <img src="{{ user_object.note.display_image.url }}" class="img-thumbnail mt-2">
-        </a>
-    </div>
-    <div class="card-body" id="profile_infos">
-        <dl class="row">
-            <dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt>
-            <dd class="col-xl-6">{{ user_object.last_name }} {{ user_object.first_name }}</dd>
-
-            <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ user_object.username }}</dd>
-
-            {% if user_object.pk == user.pk %}
-            <dt class="col-xl-6">{% trans 'password'|capfirst %}</dt>
-            <dd class="col-xl-6">
-                <a class="small" href="{% url 'password_change' %}">
-                    {% trans 'Change password' %}
-                </a>
-            </dd>
-            {% endif %}
-
-            <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ user_object.profile.section }}</dd>
-
-            <dt class="col-xl-6">{% trans 'email'|capfirst %}</dt>
-            <dd class="col-xl-6"><a href="mailto:{{ user_object.email }}">{{ user_object.email }}</a></dd>
-
-            <dt class="col-xl-6">{% trans 'phone number'|capfirst %}</dt>
-            <dd class="col-xl-6"><a
-                    href="tel:{{ user_object.profile.phone_number }}">{{ user_object.profile.phone_number }}</a></dd>
-
-            <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ user_object.profile.address }}</dd>
-
-            {% if "note.view_note"|has_perm:user_object.note %}
-            <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ user_object.note.balance | pretty_money }}</dd>
-
-            <dt class="col-xl-6">{% trans 'paid'|capfirst %}</dt>
-            <dd class="col-xl-6">{{ user_object.profile.paid|yesno }}</dd>
-            {% endif %}
-        </dl>
-
-        <h4><a href="{% url 'member:user_alias' user_object.pk %}">{% trans 'aliases'|capfirst %}</a></h4>
-        {% for alias in user_object.note.alias_set.all %}
-        <span class="badge badge-secondary">{{ alias }}</span>
-        {% endfor %}
-    </div>
-    <div class="card-footer">
-        <a class="btn btn-sm btn-secondary" href="{% url 'member:user_update_profile' user_object.pk %}">
-            <i class="fa fa-edit"></i> {% trans 'Update Profile' %}
-        </a>
-        {% url 'member:user_detail' user_object.pk as user_profile_url %}
-        {% if request.path_info != user_profile_url %}
-        <a class="btn btn-sm btn-primary" href="{{ user_profile_url }}">{% trans 'View Profile' %}</a>
-        {% endif %}
-    </div>
-</div>
-
-{% if user_object.pk == user_object.pk %}
-<a class="small float-right text-decoration-none" href="{% url 'member:auth_token' %}">
-    {% trans 'Manage auth token' %}
-</a>
-{% endif %}
\ No newline at end of file
diff --git a/apps/member/templates/member/profile_picture_update.html b/apps/member/templates/member/profile_picture_update.html
deleted file mode 100644
index c50a82996b010535a06aca837e29a5c9239c82a0..0000000000000000000000000000000000000000
--- a/apps/member/templates/member/profile_picture_update.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends "member/profile_detail.html" %}
-
-{% block profile_content%}
-{% include "member/picture_update.html" %}
-{% endblock%}
diff --git a/apps/member/templates/member/profile_tables.html b/apps/member/templates/member/profile_tables.html
deleted file mode 100644
index 6c4cf662bfe7a06420b519763c64331fa35d9d3e..0000000000000000000000000000000000000000
--- a/apps/member/templates/member/profile_tables.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% load render_table from django_tables2 %}
-{% load i18n %}
-{% load perms %}
-
-{% if not object.profile.email_confirmed and "member.change_profile_email_confirmed"|has_perm:user_object.profile %}
-    <div class="alert alert-warning">
-        {% trans "This user doesn't have confirmed his/her e-mail address." %}
-        <a href="{% url "registration:email_validation_resend" pk=user_object.pk %}">{% trans "Click here to resend a validation link." %}</a>
-    </div>
-{% endif %}
-
-<div class="card">
-    <div class="card-header position-relative" id="clubListHeading">
-        <a class="font-weight-bold">
-            <i class="fa fa-users"></i> {% trans "View my memberships" %}
-        </a>
-    </div>
-    {% render_table club_list %}
-</div>
-
-<hr>
-
-<div class="card">
-    <div class="card-header position-relative" id="historyListHeading">
-            <a class="stretched-link font-weight-bold" {% if "note.view_note"|has_perm:user_object.note %} href="{% url 'note:transactions' pk=user_object.note.pk %}" {% endif %}>
-            <i class="fa fa-euro"></i> {% trans "Transaction history" %}
-        </a>
-    </div>
-    <div id="history_list">
-        {% render_table history_list %}
-    </div>
-</div>
diff --git a/apps/member/templates/member/profile_update.html b/apps/member/templates/member/profile_update.html
index 19d971892bd038c28464b39393c2abec8ceab9f1..a50f4afd33e98db7410fd9be5e66f0335feface1 100644
--- a/apps/member/templates/member/profile_update.html
+++ b/apps/member/templates/member/profile_update.html
@@ -1,11 +1,11 @@
-{% extends "base.html" %}
-{% load i18n crispy_forms_tags %}
+{% extends "member/base.html" %}
 {% comment %}
 SPDX-License-Identifier: GPL-3.0-or-later
 {% endcomment %}
+{% load i18n crispy_forms_tags %}
 {% block contenttitle %}{% endblock %}
 
-{% block content %}
+{% block profile_content %}
 <div class="card bg-light">
     <h3 class="card-header text-center">
         {{ title }}
diff --git a/apps/member/views.py b/apps/member/views.py
index 267ae6580096c09b35d58927bc3747dffc4011d3..e7dc99252e48056be360b5a8883b7992fc7d2551 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -273,7 +273,7 @@ class PictureUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin, Det
 
 class ProfilePictureUpdateView(PictureUpdateView):
     model = User
-    template_name = 'member/profile_picture_update.html'
+    template_name = 'member/picture_update.html'
     context_object_name = 'user_object'
 
 
@@ -452,7 +452,7 @@ class ClubPictureUpdateView(PictureUpdateView):
     Update the profile picture of a club.
     """
     model = Club
-    template_name = 'member/club_picture_update.html'
+    template_name = 'member/picture_update.html'
     context_object_name = 'club'
 
     def get_success_url(self):
diff --git a/apps/note/templates/note/search_transactions.html b/apps/note/templates/note/search_transactions.html
index 2364a0b336e8d1e1c312378239128b2548438052..2a952e5afb3aecfc468f59b7d19b2a30e3bf1be6 100644
--- a/apps/note/templates/note/search_transactions.html
+++ b/apps/note/templates/note/search_transactions.html
@@ -1,65 +1,67 @@
-{% extends "member/base.html" %}
+{% extends "base.html" %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
 {% load render_table from django_tables2 %}
 {% load crispy_forms_tags %}
+{% block contenttitle %}{% endblock %}
 
-{% block profile_info %}
-    {% if note.club.weiclub %}
-        {% with club=note.club.weiclub %}
-            {% include "wei/weiclub_info.html" %}
-        {% endwith %}
-    {% elif note.club %}
-        {% with club=note.club %}
-            {% include "member/club_info.html" %}
-        {% endwith %}
-    {% elif note.user %}
-        {% with user_object=note.user %}
-            {% include "member/profile_info.html"  %}
-        {% endwith %}
-    {% endif %}
-{% endblock %}
-
-{% block profile_content %}
-    {% crispy form %}
-{% endblock %}
+{# Use a fluid-width container #}
+{% block containertype %}container-fluid{% endblock %}
 
 {% block content %}
-    {{ block.super }}
-    <div id="table">
-        {% render_table table %}
+<div class="row mt-4">
+    <div class="col-xl-4">
+        <div class="card bg-light mb-3">
+            <h3 class="card-header text-center">
+                {{ title }}
+            </h3>
+            <div class="card-body">
+                {% crispy form %}
+            </div>
+        </div>
+    </div>
+    <div class="col-xl-8">
+        <div class="card bg-light">
+            <div id="table">
+                {% render_table table %}
+            </div>
+        </div>
     </div>
+</div>
 {% endblock %}
 
 {% block extrajavascript %}
-    <script>
-        function refreshHistory() {
-            $("#history_list").load("{% url 'note:transactions' pk=object.pk %} #history_list");
-            $("#profile_infos").load("{% url 'note:transactions' pk=object.pk %} #profile_infos");
-        }
+<script>
+    function refreshHistory() {
+        $("#history_list").load("{% url 'note:transactions' pk=object.pk %} #history_list");
+        $("#profile_infos").load("{% url 'note:transactions' pk=object.pk %} #profile_infos");
+    }
 
-        function refreshFilters() {
-            let filters = "";
-            filters += "source=" + $("#id_source_pk").val();
-            filters += "&destination=" + $("#id_destination_pk").val();
-            filters += $("input[name='type']:checked").map(function() {
-                return "&type=" + $(this).val();
-            }).toArray().join("");
-            filters += "&reason=" + $("#id_reason").val();
-            filters += "&valid=" + ($("#id_valid").is(":checked") ? "1" : "");
-            filters += "&amount_gte=" + $("#id_amount_gte").val();
-            filters += "&amount_lte=" + $("#id_amount_lte").val();
-            filters += "&created_after=" + $("#id_created_after").val();
-            filters += "&created_before=" + $("#id_created_before").val();
-            console.log(filters.replace(" ", "%20"));
-            $("#table").load(location.pathname + "?" + filters.replaceAll(" ", "%20") + " #table");
-        }
+    function refreshFilters() {
+        let filters = "";
+        filters += "source=" + $("#id_source_pk").val();
+        filters += "&destination=" + $("#id_destination_pk").val();
+        filters += $("input[name='type']:checked").map(function () {
+            return "&type=" + $(this).val();
+        }).toArray().join("");
+        filters += "&reason=" + $("#id_reason").val();
+        filters += "&valid=" + ($("#id_valid").is(":checked") ? "1" : "");
+        filters += "&amount_gte=" + $("#id_amount_gte").val();
+        filters += "&amount_lte=" + $("#id_amount_lte").val();
+        filters += "&created_after=" + $("#id_created_after").val();
+        filters += "&created_before=" + $("#id_created_before").val();
+        console.log(filters.replace(" ", "%20"));
+        $("#table").load(location.pathname + "?" + filters.replaceAll(" ", "%20") + " #table");
+    }
 
-        function autocompleted() {
-            refreshFilters();
-        }
+    function autocompleted() {
+        refreshFilters();
+    }
 
-        $(document).ready(function() {
-            $("input").change(refreshFilters);
-            $("input").keyup(refreshFilters);
-        });
-    </script>
+    $(document).ready(function () {
+        $("input").change(refreshFilters);
+        $("input").keyup(refreshFilters);
+    });
+</script>
 {% endblock %}
\ No newline at end of file
diff --git a/apps/wei/templates/wei/weiclub_detail.html b/apps/wei/templates/wei/weiclub_detail.html
index 4282964cd183b8f65807fb57f4646fc07efd352b..52d918f112e954cb33bc4e0121a72a9d4ef9d2fb 100644
--- a/apps/wei/templates/wei/weiclub_detail.html
+++ b/apps/wei/templates/wei/weiclub_detail.html
@@ -1,8 +1,5 @@
 {% extends "wei/base.html" %}
 
-{# Use a fluid-width container #}
-{% block containertype %}container-fluid{% endblock %}
-
 {% block profile_info %}
 {% include "wei/weiclub_info.html" %}
 {% endblock %}
diff --git a/note_kfet/inputs.py b/note_kfet/inputs.py
index 45365bbdab73b6dc4f059f19ffae8149826dc28b..df5fc068ec7f24308a779343078680f4272f8b75 100644
--- a/note_kfet/inputs.py
+++ b/note_kfet/inputs.py
@@ -21,7 +21,7 @@ class AmountInput(NumberInput):
 
 
 class Autocomplete(TextInput):
-    template_name = "member/autocomplete_model.html"
+    template_name = "autocomplete_model.html"
 
     def __init__(self, model, resetable=False, attrs=None):
         super().__init__(attrs)
diff --git a/apps/member/templates/member/autocomplete_model.html b/note_kfet/templates/autocomplete_model.html
similarity index 100%
rename from apps/member/templates/member/autocomplete_model.html
rename to note_kfet/templates/autocomplete_model.html