diff --git a/apps/member/fixtures/initial.json b/apps/member/fixtures/initial.json
index 769650a0af14da5e3e42f955d2da0f0afa135173..bba1e7ac8de61ef1028e2eb99d306bc3032f62f2 100644
--- a/apps/member/fixtures/initial.json
+++ b/apps/member/fixtures/initial.json
@@ -5,7 +5,7 @@
         "fields": {
             "name": "BDE",
             "email": "tresorerie.bde@example.com",
-            "membership_fee": 5,
+            "membership_fee": 500,
             "membership_duration": "396 00:00:00",
             "membership_start": "213 00:00:00",
             "membership_end": "273 00:00:00"
@@ -17,7 +17,7 @@
         "fields": {
             "name": "Kfet",
             "email": "tresorerie.bde@example.com",
-            "membership_fee": 35,
+            "membership_fee": 3500,
             "membership_duration": "396 00:00:00",
             "membership_start": "213 00:00:00",
             "membership_end": "273 00:00:00"
diff --git a/apps/member/tables.py b/apps/member/tables.py
index a6de17d2f3a0cc3406f928ee8eb4376cd5f13e66..d0c37a6e2e47baaa3e4b2f3eef1eebe152fdc5d1 100644
--- a/apps/member/tables.py
+++ b/apps/member/tables.py
@@ -17,6 +17,7 @@ class ClubTable(tables.Table):
         fields = ('id', 'name', 'email')
         row_attrs = {
             'class': 'table-row',
+            'id': lambda record: "row-" + str(record.pk),
             'data-href': lambda record: record.pk
         }
 
diff --git a/apps/member/urls.py b/apps/member/urls.py
index d9dfd18153a14fecc9c9fc0c397350ac77050412..bc536f604834ce94f61d7c7def8743887d82f69a 100644
--- a/apps/member/urls.py
+++ b/apps/member/urls.py
@@ -12,6 +12,8 @@ urlpatterns = [
     path('club/<int:pk>/', views.ClubDetailView.as_view(), name="club_detail"),
     path('club/<int:pk>/add_member/', views.ClubAddMemberView.as_view(), name="club_add_member"),
     path('club/create/', views.ClubCreateView.as_view(), name="club_create"),
+    path('club/<int:pk>/update', views.ClubUpdateView.as_view(), name="club_update"),
+    path('club/<int:pk>/update_pic', views.ClubPictureUpdateView.as_view(), name="club_update_pic"),
     path('user/', views.UserListView.as_view(), name="user_list"),
     path('user/<int:pk>', views.UserDetailView.as_view(), name="user_detail"),
     path('user/<int:pk>/update', views.UserUpdateView.as_view(), name="user_update_profile"),
diff --git a/apps/member/views.py b/apps/member/views.py
index 0ba76d6ac30cc077712846dc4faefeba976d0ba4..7d3ed748c1a34e3d1d0186f5543ef57566a7131c 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -223,10 +223,7 @@ class DeleteAliasView(LoginRequiredMixin, DeleteView):
         return self.post(request, *args, **kwargs)
 
 
-class ProfilePictureUpdateView(LoginRequiredMixin, FormMixin, DetailView):
-    model = User
-    template_name = 'member/profile_picture_update.html'
-    context_object_name = 'user_object'
+class PictureUpdateView(LoginRequiredMixin, FormMixin, DetailView):
     form_class = ImageForm
 
     def get_context_data(self, *args, **kwargs):
@@ -273,6 +270,12 @@ class ProfilePictureUpdateView(LoginRequiredMixin, FormMixin, DetailView):
         return super().form_valid(form)
 
 
+class ProfilePictureUpdateView(PictureUpdateView):
+    model = User
+    template_name = 'member/profile_picture_update.html'
+    context_object_name = 'user_object'
+
+
 class ManageAuthTokens(LoginRequiredMixin, TemplateView):
     """
     Affiche le jeton d'authentification, et permet de le regénérer
@@ -329,10 +332,11 @@ class ClubCreateView(LoginRequiredMixin, CreateView):
     """
     model = Club
     form_class = ClubForm
+    success_url = reverse_lazy('member:club_list')
 
     def form_valid(self, form):
         return super().form_valid(form)
-
+    
 
 class ClubListView(LoginRequiredMixin, SingleTableView):
     """
@@ -365,6 +369,23 @@ class ClubDetailView(LoginRequiredMixin, DetailView):
         return context
 
 
+class ClubUpdateView(LoginRequiredMixin, UpdateView):
+    model = Club
+    context_object_name = "club"
+    form_class = ClubForm
+    template_name = "member/club_form.html"
+    success_url = reverse_lazy("member:club_detail")
+
+
+class ClubPictureUpdateView(PictureUpdateView):
+    model = Club
+    template_name = 'member/club_picture_update.html'
+    context_object_name = 'club'
+
+    def get_success_url(self):
+        return reverse_lazy('member:club_detail', kwargs={'pk': self.object.id})
+
+
 class ClubAddMemberView(LoginRequiredMixin, CreateView):
     model = Membership
     form_class = MembershipForm
diff --git a/apps/note/fixtures/initial.json b/apps/note/fixtures/initial.json
index a0682daef6dcf8816f05e4ff2ec8781770324fd9..51fd1a71ecf6cfb4d6d611d475a7fd1dbee2e9b4 100644
--- a/apps/note/fixtures/initial.json
+++ b/apps/note/fixtures/initial.json
@@ -70,7 +70,7 @@
       "balance": 0,
       "last_negative": null,
       "is_active": true,
-      "display_image": "",
+      "display_image": "pic/default.png",
       "created_at": "2020-02-20T20:09:38.615Z"
     }
   },
@@ -85,7 +85,7 @@
       "balance": 0,
       "last_negative": null,
       "is_active": true,
-      "display_image": "",
+      "display_image": "pic/default.png",
       "created_at": "2020-02-20T20:16:14.753Z"
     }
   },
diff --git a/templates/member/club_detail.html b/templates/member/club_detail.html
index 38f8781259be7c99291fc6434220dc816f2adb26..979c08971448746e22dccff52ddc2313d1d48315 100644
--- a/templates/member/club_detail.html
+++ b/templates/member/club_detail.html
@@ -1,62 +1,9 @@
-{% extends "base.html" %}
-{% load static %}
-{% load i18n %}
-{% load render_table from django_tables2 %}
-{% load pretty_money %}
-{% block content %}
-<p><a class="btn btn-primary" href="{% url 'member:club_list' %}">Clubs</a></p>
-<h3 class="text-center"> Club {{ object.name }}</h3>
-<dl>
-    <dt>{% trans 'Membership starts on' %}</dt>
-    <dd>{{ club.membership_start }}</dd>
-    <dt>{% trans 'Membership ends on' %}</dt>
-    <dd>{{ club.membership_end }}</dd>
-    <dt>{% trans 'Membership duration' %}</dt>
-    <dd>{{ club.membership_duration }}</dd>
-    <dt> Aliases </dt>
-    <dd>{{ club.note.aliases_set.all }}</dd>
-    <dt>{% trans 'balance' %}</dt>
-    <dd>{{ club.note.balance | pretty_money }}</dd>
+{% extends "member/noteowner_detail.html" %}
 
-</dl>
+{% block profile_info %}
+{% include "member/club_info.html" %}
+{% endblock %}
 
-
-<div class="btn-group" role="group">
-    <a class="btn btn-primary" href="{% url 'member:club_add_member' pk=object.pk %}"> Ajouter des membres </a>
-    <a class="btn btn-primary" href="{% url 'member:club_add_member' pk=object.pk %}"> Modifier les informations </a>
-    <a class="btn btn-primary" href="{% url 'member:club_add_member' pk=object.pk %}"> Ajouter des roles </a>
-</div>
-
-<div class="accordion" id="accordionExample">
-  <div class="card">
-    <div class="card-header" id="headingOne">
-      <h5 class="mb-0">
-        <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
-            <i class="fa fa-users"></i> Membres du club
-        </button>
-      </h5>
-    </div>
-
-    <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
-      <div class="card-body">
-
-          {% render_table member_list %}
-      </div>
-    </div>
-  </div>
-  <div class="card">
-    <div class="card-header" id="headingTwo">
-      <h5 class="mb-0">
-        <button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
-            <i class="fa fa-euro"></i> {% trans "Transaction history" %}
-        </button>
-      </h5>
-    </div>
-    <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionExample">
-      <div class="card-body">
-          {% render_table history_list %}
-      </div>
-    </div>
-  </div>
-</div>
-    {% endblock %}
+{% block profile_content %}
+{% include "member/club_tables.html" %}
+{% endblock %}
diff --git a/templates/member/club_form.html b/templates/member/club_form.html
index 577297bbc12eb39b0f0457ae8c65945ffc71750f..99c254e3a2d550f39208a5f070fb7f7a8a328735 100644
--- a/templates/member/club_form.html
+++ b/templates/member/club_form.html
@@ -3,7 +3,6 @@
 {% load i18n %}
 {% load crispy_forms_tags %}
 {% block content %}
-<p><a class="btn btn-default" href="{% url 'note:template_list' %}">{% trans "Clubs list" %}</a></p>
 <form method="post">
 {% csrf_token %}
 {{form|crispy}}
diff --git a/templates/member/club_info.html b/templates/member/club_info.html
new file mode 100644
index 0000000000000000000000000000000000000000..a88527fcac1af3580d87462f27a277c9b2f75473
--- /dev/null
+++ b/templates/member/club_info.html
@@ -0,0 +1,32 @@
+{% load i18n static pretty_money %}
+<div class="card bg-light shadow">
+    <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>
+
+            <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ club.membership_start }}</dd>
+
+            <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ club.membership_end }}</dd>
+
+            <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ club.membership_duration }}</dd>
+
+            <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ club.membership_fee|pretty_money }}</dd>
+            
+            <dt class="col-xl-6"><a href="{% url 'member:user_alias' club.pk %}">{% trans 'aliases'|capfirst %}</a></dt>
+            <dd class="col-xl-6 text-truncate">{{ object.note.alias_set.all|join:", " }}</dd>
+
+            <dt class="col-xl-3">{% trans 'email'|capfirst %}</dt>
+            <dd class="col-xl-9"><a href="mailto:{{ club.email }}">{{ club.email}}</a></dd>
+        </dl>
+    </div>
+</div>
diff --git a/templates/member/club_list.html b/templates/member/club_list.html
index 165711136329c1a8ccbdf12880c33499541c0436..7f0b02a10f035c4c3ad3aef2089415f163028594 100644
--- a/templates/member/club_list.html
+++ b/templates/member/club_list.html
@@ -2,15 +2,65 @@
 {% load render_table from django_tables2 %}
 {% load i18n %}
 {% block content %}
-
-{% render_table  table %}
-
-<a class="btn btn-primary" href="{% url 'member:club_create' %}">{% trans "New club" %}</a>
+<div class="row justify-content-center mb-4">
+    <div class="col-md-10 text-center">
+        <h4>
+            {% trans "search clubs" %}
+        </h4>
+        <input class="form-control mx-auto w-25" type="text" onkeyup="search_field_moved();return(false);" id="search_field"/>
+        <hr>
+        <a class="btn btn-primary text-center my-4" href="{% url 'member:club_create' %}">{% trans "Créer un club" %}</a>
+    </div>
+</div>
+<div class="row justify-content-center">   
+    <div class="col-md-10">
+        <div class="card card-border shadow">
+            <div class="card-header text-center">
+                <h5> {% trans "club listing "%}</h5>
+            </div>
+            <div class="card-body px-0 py-0" id="club_table">
+                {% render_table table %}
+            </div>
+        </div>
+    </div>
+</div>
 
 {% endblock %}
 {% block extrajavascript %}
 <script type="text/javascript">
 
+function getInfo() {
+    var asked = $("#search_field").val();
+    /* on ne fait la requête que si on a au moins un caractère pour chercher */
+    var sel = $(".table-row");
+    if (asked.length >= 1) {
+        $.getJSON("/api/members/club/?format=json&search="+asked, function(buttons){
+            let selected_id = buttons.results.map((a => "#row-"+a.id));
+            console.log(selected_id.join());
+            $(".table-row,"+selected_id.join()).show();
+            $(".table-row").not(selected_id.join()).hide();
+            
+        });
+    }else{
+        // show everything
+        $('table tr').show();
+    }       
+}
+var timer;
+var timer_on;
+/* Fontion appelée quand le texte change (délenche le timer) */
+function search_field_moved(secondfield) {
+    if (timer_on) { // Si le timer a déjà été lancé, on réinitialise le compteur.
+        clearTimeout(timer);
+        timer = setTimeout("getInfo(" + secondfield + ")", 300);
+    }
+    else { // Sinon, on le lance et on enregistre le fait qu'il tourne.
+        timer = setTimeout("getInfo(" + secondfield + ")", 300);
+        timer_on = true;
+    }
+}
+
+// clickable row 
 $(document).ready(function($) {
     $(".table-row").click(function() {
         window.document.location = $(this).data("href");
diff --git a/templates/member/club_picture_update.html b/templates/member/club_picture_update.html
new file mode 100644
index 0000000000000000000000000000000000000000..70f5cf4ac0f99c1f729fde535090fbda67821984
--- /dev/null
+++ b/templates/member/club_picture_update.html
@@ -0,0 +1,10 @@
+{% extends "member/club_detail.html" %}
+{% load i18n static pretty_money django_tables2 crispy_forms_tags %}
+
+{% block profile_info %}
+{% include "member/club_info.html" %}
+{% endblock%}
+
+{% block profile_content%}
+{% include "member/picture_update.html" %}
+{% endblock%}
diff --git a/templates/member/club_tables.html b/templates/member/club_tables.html
new file mode 100644
index 0000000000000000000000000000000000000000..fbded9c3b194088e74b178ba20f220af127a0f43
--- /dev/null
+++ b/templates/member/club_tables.html
@@ -0,0 +1,31 @@
+{% load render_table from django_tables2 %}
+{% load i18n %}
+<div class="accordion shadow" id="accordionProfile">
+    <div class="card">
+        <div class="card-header position-relative" id="clubListHeading">
+            <a class="btn btn-link stretched-link font-weight-bold"
+               data-toggle="collapse" data-target="#clubListCollapse"
+               aria-expanded="true" aria-controls="clubListCollapse">
+                <i class="fa fa-users"></i> {% trans "Member of the Club" %}
+            </a>
+        </div>
+        <div id="clubListCollapse" class="collapse show" style="overflow:auto hidden" aria-labelledby="clubListHeading" data-parent="#accordionProfile">
+            {% render_table member_list %}
+        </div>
+    </div>
+
+    <div class="card">
+        <div class="card-header position-relative" id="historyListHeading">
+            <a class="btn btn-link stretched-link collapsed font-weight-bold"
+               data-toggle="collapse" data-target="#historyListCollapse"
+               aria-expanded="false" aria-controls="historyListCollapse">
+                <i class="fa fa-euro"></i> {% trans "Transaction history" %}
+            </a>
+        </div>
+        <div id="historyListCollapse" class="collapse" style="overflow:auto hidden" aria-labelledby="historyListHeading" data-parent="#accordionProfile">
+            <div id="history_list">
+                {% render_table history_list %}
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/templates/member/noteowner_detail.html b/templates/member/noteowner_detail.html
new file mode 100644
index 0000000000000000000000000000000000000000..ad329aee5e48b3fb66a9bd0c80cdf59403f609a4
--- /dev/null
+++ b/templates/member/noteowner_detail.html
@@ -0,0 +1,27 @@
+{% extends "base.html" %}
+{% load static %}
+{% load i18n %}
+{% load render_table from django_tables2 %}
+{% load pretty_money %}
+
+{% block content %}
+<div class="row mt-4">
+    <div class="col-md-3 mb-4">
+        {% block profile_info %}
+        {% endblock %}
+    </div>
+    <div class="col-md-9">
+        {% block profile_content %}
+        {% endblock %}
+    </div>
+</div>
+{% endblock %}
+
+{% block extrajavascript %}
+    <script>
+    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");
+    }
+    </script>
+{% endblock %}
diff --git a/templates/member/picture_update.html b/templates/member/picture_update.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0c43e47c52c659e2d308a48647486a0b7db26fc
--- /dev/null
+++ b/templates/member/picture_update.html
@@ -0,0 +1,95 @@
+{% 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>
+        <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">
+{% 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]);
+             }
+         });
+
+         /* 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-in").click(function () {
+             $image.cropper("zoom", 0.1);
+         });
+
+         $(".js-zoom-out").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();
+         });
+
+     });
+    </script>
+{% endblock %}
diff --git a/templates/member/profile_detail.html b/templates/member/profile_detail.html
index 31510acfb8f8d71511880fa3126cb62f0665dcf5..42d03d8b2c26a1ca859b6acd4cb16944721d51e2 100644
--- a/templates/member/profile_detail.html
+++ b/templates/member/profile_detail.html
@@ -1,97 +1,9 @@
-{% extends "base.html" %}
-{% load i18n static pretty_money django_tables2 %}
+{% extends "member/noteowner_detail.html" %}
 
-{% block content %}
-<div class="row mt-4">
-    <div class="col-md-3 mb-4">
-        <div class="card bg-light shadow">
-            <div class="card-top text-center">
-                <a  href="{% url 'member:user_update_pic' object.pk  %}">
-                    <img src="{{ 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">{{ object.last_name }} {{ object.first_name }}</dd>
-
-                    <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
-                    <dd class="col-xl-6">{{ object.username }}</dd>
-
-                    <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>
-
-                    <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
-                    <dd class="col-xl-6">{{ object.profile.section }}</dd>
-
-                    <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
-                    <dd class="col-xl-6">{{ object.profile.address }}</dd>
-
-                    <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
-                    <dd class="col-xl-6">{{ object.note.balance | pretty_money }}</dd>
-
-                    <dt class="col-xl-6"> <a href="{% url 'member:user_alias' object.pk %}">{% trans 'aliases'|capfirst %}</a></dt>
-                    <dd class="col-xl-6 text-truncate">{{ object.note.alias_set.all|join:", " }}</dd>
-                </dl>
-
-                {% if object.pk == user.pk %}
-                    <a class="small" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
-                {% endif %}
-            </div>
-            <div class="card-footer text-center">
-                <a class="btn btn-primary btn-sm" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
-                {% url 'member:user_detail' object.pk as user_profile_url %}
-                {%if request.get_full_path != user_profile_url %}
-                <a class="btn btn-primary btn-sm" href="{{ user_profile_url }}">{% trans 'View Profile' %}</a>
-                {% endif %}
-            </div>
-        </div>
-    </div>
-    <div class="col-md-9">
-    {% block profile_content %}
-        <div class="accordion shadow" id="accordionProfile">
-            <div class="card">
-                <div class="card-header position-relative" id="clubListHeading">
-                    <a class="btn btn-link stretched-link font-weight-bold"
-                       data-toggle="collapse" data-target="#clubListCollapse"
-                       aria-expanded="true" aria-controls="clubListCollapse">
-                        <i class="fa fa-users"></i> {% trans "View my memberships" %}
-                    </a>
-                </div>
-                <div id="clubListCollapse" class="collapse show" style="overflow:auto hidden" aria-labelledby="clubListHeading" data-parent="#accordionProfile">
-                    {% render_table club_list %}
-                </div>
-            </div>
-
-            <div class="card">
-                <div class="card-header position-relative" id="historyListHeading">
-                    <a class="btn btn-link stretched-link collapsed font-weight-bold"
-                       data-toggle="collapse" data-target="#historyListCollapse"
-                       aria-expanded="false" aria-controls="historyListCollapse">
-                        <i class="fa fa-euro"></i> {% trans "Transaction history" %}
-                    </a>
-                </div>
-                <div id="historyListCollapse" class="collapse" style="overflow:auto hidden" aria-labelledby="historyListHeading" data-parent="#accordionProfile">
-                    <div id="history_list">
-                        {% render_table history_list %}
-                    </div>
-                </div>
-            </div>
-        </div>
-    {% endblock %}
-    </div>
-</div>
+{% block profile_info %}
+{% include "member/profile_info.html" %}
 {% endblock %}
 
-{% block extrajavascript %}
-    <script>
-    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");
-    }
-    </script>
+{% block profile_content %}
+{% include "member/profile_tables.html" %}
 {% endblock %}
diff --git a/templates/member/profile_info.html b/templates/member/profile_info.html
new file mode 100644
index 0000000000000000000000000000000000000000..3038386650422cd85f05333a01b7f5950a7bd41a
--- /dev/null
+++ b/templates/member/profile_info.html
@@ -0,0 +1,48 @@
+{% load i18n static pretty_money %}
+
+<div class="card bg-light shadow">
+    <div class="card-top text-center">
+        <a  href="{% url 'member:user_update_pic' object.pk  %}">
+            <img src="{{ 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">{{ object.last_name }} {{ object.first_name }}</dd>
+
+            <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ object.username }}</dd>
+
+            <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>
+
+            <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ object.profile.section }}</dd>
+
+            <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ object.profile.address }}</dd>
+
+            <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
+            <dd class="col-xl-6">{{ object.note.balance | pretty_money }}</dd>
+
+            <dt class="col-xl-6"> <a href="{% url 'member:user_alias' object.pk %}">{% trans 'aliases'|capfirst %}</a></dt>
+            <dd class="col-xl-6 text-truncate">{{ object.note.alias_set.all|join:", " }}</dd>
+        </dl>
+
+        {% if object.pk == user.pk %}
+        <a class="small" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
+        {% endif %}
+    </div>
+    <div class="card-footer text-center">
+        <a class="btn btn-primary btn-sm" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
+        {% url 'member:user_detail' object.pk as user_profile_url %}
+        {%if request.get_full_path != user_profile_url %}
+        <a class="btn btn-primary btn-sm" href="{{ user_profile_url }}">{% trans 'View Profile' %}</a>
+        {% endif %}
+    </div>
+</div>
diff --git a/templates/member/profile_picture_update.html b/templates/member/profile_picture_update.html
index 36e53dcd3444f40407b56200a92a12f761220902..db7c5767970a285c0a703240254b967090c1d073 100644
--- a/templates/member/profile_picture_update.html
+++ b/templates/member/profile_picture_update.html
@@ -1,97 +1,10 @@
-{% extends "member/profile_detail.html" %}
+{% extends "member/noteowner_detail.html" %}
 {% load i18n static pretty_money django_tables2 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>
-        <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">
-{% endblock %}
+{% block profile_info %}
+{% include "member/profile_info.html" %}
+{% 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]);
-             }
-         });
-
-         /* 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-in").click(function () {
-             $image.cropper("zoom", 0.1);
-         });
-
-         $(".js-zoom-out").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();
-         });
-
-     });
-    </script>
-{% endblock %}
+{% block profile_content%}
+{% include "member/picture_update.html" %}
+{% endblock%}
diff --git a/templates/member/profile_tables.html b/templates/member/profile_tables.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d2c687f23274092472660dcbdbe0adb01654738
--- /dev/null
+++ b/templates/member/profile_tables.html
@@ -0,0 +1,31 @@
+{% load render_table from django_tables2 %}
+{% load i18n %}
+<div class="accordion shadow" id="accordionProfile">
+    <div class="card">
+        <div class="card-header position-relative" id="clubListHeading">
+            <a class="btn btn-link stretched-link font-weight-bold"
+               data-toggle="collapse" data-target="#clubListCollapse"
+               aria-expanded="true" aria-controls="clubListCollapse">
+                <i class="fa fa-users"></i> {% trans "View my memberships" %}
+            </a>
+        </div>
+        <div id="clubListCollapse" class="collapse show" style="overflow:auto hidden" aria-labelledby="clubListHeading" data-parent="#accordionProfile">
+            {% render_table club_list %}
+        </div>
+    </div>
+
+    <div class="card">
+        <div class="card-header position-relative" id="historyListHeading">
+            <a class="btn btn-link stretched-link collapsed font-weight-bold"
+               data-toggle="collapse" data-target="#historyListCollapse"
+               aria-expanded="false" aria-controls="historyListCollapse">
+                <i class="fa fa-euro"></i> {% trans "Transaction history" %}
+            </a>
+        </div>
+        <div id="historyListCollapse" class="collapse" style="overflow:auto hidden" aria-labelledby="historyListHeading" data-parent="#accordionProfile">
+            <div id="history_list">
+                {% render_table history_list %}
+            </div>
+        </div>
+    </div>
+</div>