diff --git a/activity/migrations/0001_initial.py b/activity/migrations/0001_initial.py
deleted file mode 100644
index 5fb6579c219d5f7577b097d6de5c5fe2f8b4d742..0000000000000000000000000000000000000000
--- a/activity/migrations/0001_initial.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Generated by Django 2.2.3 on 2019-07-16 11:53
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
-    initial = True
-
-    dependencies = [
-        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
-        ('note', '0001_initial'),
-        ('member', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='Activity',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, verbose_name='name')),
-                ('description', models.TextField(verbose_name='description')),
-                ('date_start', models.DateTimeField(verbose_name='start date')),
-                ('date_end', models.DateTimeField(verbose_name='end date')),
-            ],
-            options={
-                'verbose_name': 'activity',
-                'verbose_name_plural': 'activities',
-            },
-        ),
-        migrations.CreateModel(
-            name='ActivityType',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, verbose_name='name')),
-                ('can_invite', models.BooleanField(verbose_name='can invite')),
-                ('guest_entry_fee', models.PositiveIntegerField(verbose_name='guest entry fee')),
-            ],
-            options={
-                'verbose_name': 'activity type',
-                'verbose_name_plural': 'activity types',
-            },
-        ),
-        migrations.CreateModel(
-            name='Guest',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255)),
-                ('entry', models.DateTimeField(null=True)),
-                ('activity', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='activity.Activity')),
-                ('entry_transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='note.Transaction')),
-                ('inviter', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL)),
-            ],
-            options={
-                'verbose_name': 'guest',
-                'verbose_name_plural': 'guests',
-            },
-        ),
-        migrations.AddField(
-            model_name='activity',
-            name='activity_type',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='activity.ActivityType', verbose_name='type'),
-        ),
-        migrations.AddField(
-            model_name='activity',
-            name='attendees_club',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='member.Club', verbose_name='attendees club'),
-        ),
-        migrations.AddField(
-            model_name='activity',
-            name='organizer',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='member.Club', verbose_name='organizer'),
-        ),
-    ]
diff --git a/member/migrations/0001_initial.py b/member/migrations/0001_initial.py
deleted file mode 100644
index c3d7172db8ffa124debbc95439cd619657596d93..0000000000000000000000000000000000000000
--- a/member/migrations/0001_initial.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Generated by Django 2.2.3 on 2019-07-16 11:53
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
-    initial = True
-
-    dependencies = [
-        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='Club',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, verbose_name='paid')),
-                ('email', models.EmailField(max_length=254, verbose_name='email')),
-                ('membership_fee', models.PositiveIntegerField(verbose_name='membership fee')),
-                ('membership_duration', models.DurationField(help_text='The longest time a membership can last (NULL = infinite).', null=True, verbose_name='membership duration')),
-                ('membership_start', models.DurationField(help_text='How long after January 1st the members can renew their membership.', null=True, verbose_name='membership start')),
-                ('membership_end', models.DurationField(help_text='How long the membership can last after January 1st of the next year after members can renew their membership.', null=True, verbose_name='membership end')),
-            ],
-            options={
-                'verbose_name': 'club',
-                'verbose_name_plural': 'clubs',
-            },
-        ),
-        migrations.CreateModel(
-            name='Role',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, verbose_name='name')),
-            ],
-            options={
-                'verbose_name': 'role',
-                'verbose_name_plural': 'roles',
-            },
-        ),
-        migrations.CreateModel(
-            name='Profile',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('profile_picture', models.ImageField(blank=True, max_length=255, upload_to='', verbose_name='profile picture')),
-                ('phone_number', models.CharField(blank=True, max_length=50, null=True, verbose_name='phone number')),
-                ('section', models.CharField(blank=True, help_text='e.g. "1A0", "9A♥", "SAPHIRE"', max_length=255, null=True, verbose_name='section')),
-                ('address', models.CharField(blank=True, max_length=255, null=True, verbose_name='address')),
-                ('paid', models.BooleanField(default=False, verbose_name='paid')),
-                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
-            ],
-            options={
-                'verbose_name': 'user profile',
-                'verbose_name_plural': 'user profile',
-            },
-        ),
-        migrations.CreateModel(
-            name='Membership',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('date_start', models.DateField(verbose_name='membership starts on')),
-                ('date_end', models.DateField(null=True, verbose_name='membership ends on')),
-                ('fee', models.PositiveIntegerField(verbose_name='fee')),
-                ('club', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='member.Club')),
-                ('roles', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='member.Role')),
-                ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
-            ],
-            options={
-                'verbose_name': 'membership',
-                'verbose_name_plural': 'memberships',
-            },
-        ),
-    ]
diff --git a/note/migrations/0001_initial.py b/note/migrations/0001_initial.py
deleted file mode 100644
index dd014d82a11027c942647422a62fe4fe6adf2661..0000000000000000000000000000000000000000
--- a/note/migrations/0001_initial.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# Generated by Django 2.2.3 on 2019-07-16 11:53
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-import django.utils.timezone
-
-
-class Migration(migrations.Migration):
-
-    initial = True
-
-    dependencies = [
-        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
-        ('member', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='Note',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('balance', models.IntegerField(help_text='in centimes, money credited for this instance', verbose_name='account balance')),
-                ('is_active', models.BooleanField(default=True, help_text='Designates whether this note should be treated as active. Unselect this instead of deleting notes.', verbose_name='active')),
-            ],
-            options={
-                'verbose_name': 'note',
-                'verbose_name_plural': 'notes',
-            },
-        ),
-        migrations.CreateModel(
-            name='Transaction',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('datetime', models.DateTimeField(default=django.utils.timezone.now, verbose_name='destination')),
-                ('quantity', models.PositiveSmallIntegerField(verbose_name='quantity')),
-                ('amount', models.PositiveIntegerField(verbose_name='amount')),
-                ('transaction_type', models.CharField(max_length=31, verbose_name='type')),
-                ('description', models.TextField(verbose_name='description')),
-                ('valid', models.NullBooleanField(verbose_name='valid')),
-                ('destination', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='note.Note', verbose_name='destination')),
-                ('source', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='note.Note', verbose_name='source')),
-            ],
-            options={
-                'verbose_name': 'transaction',
-                'verbose_name_plural': 'transactions',
-            },
-        ),
-        migrations.CreateModel(
-            name='NoteSpecial',
-            fields=[
-                ('note_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='note.Note')),
-                ('special_type', models.CharField(max_length=255, unique=True, verbose_name='type')),
-            ],
-            options={
-                'verbose_name': 'special note',
-                'verbose_name_plural': 'special notes',
-            },
-            bases=('note.note',),
-        ),
-        migrations.CreateModel(
-            name='TransactionTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, verbose_name='name')),
-                ('amount', models.PositiveIntegerField(verbose_name='amount')),
-                ('template_type', models.CharField(max_length=31, verbose_name='type')),
-                ('destination', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='note.Note', verbose_name='destination')),
-            ],
-            options={
-                'verbose_name': 'transaction template',
-                'verbose_name_plural': 'transaction templates',
-            },
-        ),
-        migrations.CreateModel(
-            name='Alias',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=255, unique=True, verbose_name='name')),
-                ('note', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='note.Note')),
-            ],
-            options={
-                'verbose_name': 'alias',
-                'verbose_name_plural': 'aliases',
-            },
-        ),
-        migrations.CreateModel(
-            name='NoteUser',
-            fields=[
-                ('note_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='note.Note')),
-                ('user', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='note', to=settings.AUTH_USER_MODEL)),
-            ],
-            options={
-                'verbose_name': "one's note",
-                'verbose_name_plural': 'users note',
-            },
-            bases=('note.note',),
-        ),
-        migrations.CreateModel(
-            name='NoteClub',
-            fields=[
-                ('note_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='note.Note')),
-                ('user', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='note', to='member.Club')),
-            ],
-            options={
-                'verbose_name': 'club note',
-                'verbose_name_plural': 'clubs notes',
-            },
-            bases=('note.note',),
-        ),
-        migrations.CreateModel(
-            name='MembershipTransaction',
-            fields=[
-                ('transaction_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='note.Transaction')),
-                ('membership', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='transaction', to='member.Membership')),
-            ],
-            options={
-                'verbose_name': 'membership transaction',
-                'verbose_name_plural': 'membership transactions',
-            },
-            bases=('note.transaction',),
-        ),
-    ]
diff --git a/note/migrations/0002_auto_20190716_1406.py b/note/migrations/0002_auto_20190716_1406.py
deleted file mode 100644
index 399205aa70635612ef51a3f93e8a6ee53aa09dc4..0000000000000000000000000000000000000000
--- a/note/migrations/0002_auto_20190716_1406.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Generated by Django 2.2.3 on 2019-07-16 12:06
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('note', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.RenameField(
-            model_name='noteclub',
-            old_name='user',
-            new_name='club',
-        ),
-    ]
diff --git a/note/models/notes.py b/note/models/notes.py
index f7c8c53908fa9e743e980987264b23f16ecacd06..499678d92a0eae0345c28ec8ce3258a6833de1c7 100644
--- a/note/models/notes.py
+++ b/note/models/notes.py
@@ -4,6 +4,8 @@
 
 from django.conf import settings
 from django.db import models
+from django.db.models.signals import post_save
+from django.dispatch import receiver
 from django.utils.translation import gettext_lazy as _
 
 """
@@ -20,6 +22,7 @@ class Note(models.Model):
     balance = models.IntegerField(
         verbose_name=_('account balance'),
         help_text=_('in centimes, money credited for this instance'),
+        default=0,
     )
     is_active = models.BooleanField(
         _('active'),
@@ -107,3 +110,23 @@ class Alias(models.Model):
     class Meta:
         verbose_name = _("alias")
         verbose_name_plural = _("aliases")
+
+
+@receiver(post_save, sender=settings.AUTH_USER_MODEL)
+def save_user_note(instance, created, **_kwargs):
+    """
+    Hook to create and save a note when an user is updated
+    """
+    if created:
+        NoteUser.objects.create(user=instance)
+    instance.note.save()
+
+
+@receiver(post_save, sender='member.Club')
+def save_club_note(instance, created, **_kwargs):
+    """
+    Hook to create and save a note when a club is updated
+    """
+    if created:
+        NoteClub.objects.create(club=instance)
+    instance.note.save()