diff --git a/mhackspace/users/admin.py b/mhackspace/users/admin.py
index ce6d8e1..2c0a1cf 100644
--- a/mhackspace/users/admin.py
+++ b/mhackspace/users/admin.py
@@ -36,7 +36,7 @@ class MyUserAdmin(AuthUserAdmin):
     form = MyUserChangeForm
     add_form = MyUserCreationForm
     fieldsets = (
-            ('User Profile', {'fields': ('name',)}),
+            ('User Profile', {'fields': ('name', 'image')}),
     ) + AuthUserAdmin.fieldsets
     list_display = ('username', 'name', 'is_superuser')
     search_fields = ['name']
diff --git a/mhackspace/users/forms.py b/mhackspace/users/forms.py
new file mode 100644
index 0000000..73b16ff
--- /dev/null
+++ b/mhackspace/users/forms.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+from django.db import models
+from django.forms import ModelForm
+
+from .models import UserBlurb
+
+class UserBlurbForm(ModelForm):
+    class Meta:
+        model = UserBlurb
+        exclude = ['user']
diff --git a/mhackspace/users/migrations/0002_membership_userblurb.py b/mhackspace/users/migrations/0002_membership_userblurb.py
new file mode 100644
index 0000000..4e0c458
--- /dev/null
+++ b/mhackspace/users/migrations/0002_membership_userblurb.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-01-06 08:53
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('users', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Membership',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('payment', models.DecimalField(decimal_places=2, max_digits=6)),
+                ('date', models.DateTimeField()),
+                ('reference', models.CharField(max_length=255)),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='UserBlurb',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('skills', models.CharField(max_length=255)),
+                ('description', models.TextField()),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+    ]
diff --git a/mhackspace/users/migrations/0003_user_image.py b/mhackspace/users/migrations/0003_user_image.py
new file mode 100644
index 0000000..f55e304
--- /dev/null
+++ b/mhackspace/users/migrations/0003_user_image.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-01-06 19:03
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('users', '0002_membership_userblurb'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='user',
+            name='image',
+            field=models.ImageField(blank=True, null=True, upload_to='/upload/avatars'),
+        ),
+    ]
diff --git a/mhackspace/users/migrations/0004_auto_20170106_2030.py b/mhackspace/users/migrations/0004_auto_20170106_2030.py
new file mode 100644
index 0000000..c98e20c
--- /dev/null
+++ b/mhackspace/users/migrations/0004_auto_20170106_2030.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-01-06 20:30
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('users', '0003_user_image'),
+    ]
+
+    operations = [
+        migrations.RenameModel(
+            old_name='Membership',
+            new_name='UserMembership',
+        ),
+        migrations.AlterField(
+            model_name='user',
+            name='image',
+            field=models.ImageField(blank=True, null=True, upload_to='avatars/'),
+        ),
+    ]
diff --git a/mhackspace/users/models.py b/mhackspace/users/models.py
index 0beebfb..cd6920c 100644
--- a/mhackspace/users/models.py
+++ b/mhackspace/users/models.py
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals, absolute_import
 
+from django.conf import settings
 from django.contrib.auth.models import AbstractUser
 from django.core.urlresolvers import reverse
 from django.db import models
@@ -10,13 +11,24 @@ from django.utils.translation import ugettext_lazy as _
 
 @python_2_unicode_compatible
 class User(AbstractUser):
-
-    # First Name and Last Name do not cover name patterns
-    # around the globe.
     name = models.CharField(_('Name of User'), blank=True, max_length=255)
+    image = models.ImageField(upload_to='avatars/', blank=True, null=True)
 
     def __str__(self):
         return self.username
 
     def get_absolute_url(self):
         return reverse('users:detail', kwargs={'username': self.username})
+
+
+class UserBlurb(models.Model):
+    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
+    skills = models.CharField(max_length=255)
+    description = models.TextField()
+
+
+class UserMembership(models.Model):
+    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
+    payment = models.DecimalField(max_digits=6, decimal_places=2)
+    date = models.DateTimeField() 
+    reference = models.CharField(max_length=255)
diff --git a/mhackspace/users/views.py b/mhackspace/users/views.py
index 4cfe64a..bbdfb07 100644
--- a/mhackspace/users/views.py
+++ b/mhackspace/users/views.py
@@ -7,7 +7,10 @@ from django.views.generic import DetailView, ListView, RedirectView, UpdateView
 from django.contrib.auth.mixins import LoginRequiredMixin
 
 from .models import User
+from .models import UserBlurb
+from .models import UserMembership
 
+from .forms import UserBlurbForm
 
 class UserDetailView(LoginRequiredMixin, DetailView):
     model = User
@@ -15,6 +18,12 @@ class UserDetailView(LoginRequiredMixin, DetailView):
     slug_field = 'username'
     slug_url_kwarg = 'username'
 
+    def get_context_data(self, **kwargs):
+        # xxx will be available in the template as the related objects
+        context = super(UserDetailView, self).get_context_data(**kwargs)
+        context['blurb'] = UserBlurb.objects.filter(user=self.get_object()).first()
+        context['membership'] = UserMembership.objects.filter(user=self.get_object()).first()
+        return context
 
 class UserRedirectView(LoginRequiredMixin, RedirectView):
     permanent = False
@@ -25,21 +34,34 @@ class UserRedirectView(LoginRequiredMixin, RedirectView):
 
 
 class UserUpdateView(LoginRequiredMixin, UpdateView):
-
-    fields = ['name', ]
-
-    # we already imported User in the view code above, remember?
+    fields = ['name', 'image', ]
     model = User
 
     # send the user back to their own page after a successful update
     def get_success_url(self):
-        return reverse('users:detail',
-                       kwargs={'username': self.request.user.username})
+        return reverse(
+            'users:detail',
+            kwargs={'username': self.request.user.username})
+
+    def get_context_data(self, **kwargs):
+        context = super(UserUpdateView, self).get_context_data(**kwargs)
+        profile = UserBlurb.objects.filter(user=self.get_object()).first()
+        context['form_blurb'] = UserBlurbForm(instance=profile)
+        return context
 
     def get_object(self):
         # Only get the User record for the user making the request
         return User.objects.get(username=self.request.user.username)
 
+    def form_valid(self, form):
+        profile = UserBlurb.objects.filter(user=self.get_object()).first()
+        form_blurb = UserBlurbForm(self.request.POST, instance=profile)
+        if form_blurb.is_valid():
+            blurb_model = form_blurb.save(commit=False)
+            blurb_model.user = self.request.user
+            blurb_model.save()
+
+        return super(UserUpdateView, self).form_valid(form)
 
 class UserListView(LoginRequiredMixin, ListView):
     model = User