diff --git a/src/account/admin.py b/src/account/admin.py
index ced8aebf3fec2c3ed4dd60e9c4369c86d1770c59..b9e5817dfac078d71887a8d90fdda504257bb88a 100644
--- a/src/account/admin.py
+++ b/src/account/admin.py
@@ -1,13 +1,16 @@
 from django.contrib import admin
-from .models import Profile
+from . import models
 
 
-@admin.register(Profile)
+@admin.register(models.Profile)
 class ProfileAdmin(admin.ModelAdmin):
-    list_display = ('user_username', 'join_date', 'pref_group')
+    list_display = ('user_username', 'join_date')
 
     def user_username(self, obj):
         return obj.user.username
 
     user_username.admin_order_field = 'user__username'
+
+
 # Register your models here.
+admin.site.register(models.GroupChoice)
diff --git a/src/account/migrations/0003_profile_nick.py b/src/account/migrations/0003_profile_nick.py
new file mode 100644
index 0000000000000000000000000000000000000000..7a3542787808c4e28493012327718f79731e9f3c
--- /dev/null
+++ b/src/account/migrations/0003_profile_nick.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2017-12-23 11:06
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0002_auto_20171114_2144'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='profile',
+            name='nick',
+            field=models.CharField(blank=True, max_length=15, null=True),
+        ),
+    ]
diff --git a/src/account/migrations/0004_profile_signed.py b/src/account/migrations/0004_profile_signed.py
new file mode 100644
index 0000000000000000000000000000000000000000..424407361c1f04b2068daab365199eb7d5aa9e2b
--- /dev/null
+++ b/src/account/migrations/0004_profile_signed.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2017-12-23 11:10
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0003_profile_nick'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='profile',
+            name='signed',
+            field=models.BooleanField(default=False),
+        ),
+    ]
diff --git a/src/account/migrations/0005_auto_20171223_1455.py b/src/account/migrations/0005_auto_20171223_1455.py
new file mode 100644
index 0000000000000000000000000000000000000000..d5e5fb83b2f2deeaf85dba89cb35de502a01ea4e
--- /dev/null
+++ b/src/account/migrations/0005_auto_20171223_1455.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2017-12-23 13:55
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0004_profile_signed'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='profile',
+            name='join_date',
+            field=models.DateField(auto_now=True),
+        ),
+    ]
diff --git a/src/account/migrations/0006_auto_20180123_1713.py b/src/account/migrations/0006_auto_20180123_1713.py
new file mode 100644
index 0000000000000000000000000000000000000000..035ce31da185ae28746fa3674f1670e1491e671f
--- /dev/null
+++ b/src/account/migrations/0006_auto_20180123_1713.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-23 16:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0005_auto_20171223_1455'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='GroupChoice',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('pref_group', models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None')], default='None', max_length=10)),
+            ],
+        ),
+        migrations.RemoveField(
+            model_name='profile',
+            name='pref_group',
+        ),
+        migrations.AddField(
+            model_name='groupchoice',
+            name='profile',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='preferd_groups', to='account.Profile'),
+        ),
+        migrations.AlterUniqueTogether(
+            name='groupchoice',
+            unique_together=set([('pref_group', 'profile')]),
+        ),
+    ]
diff --git a/src/account/migrations/0007_auto_20180123_1723.py b/src/account/migrations/0007_auto_20180123_1723.py
new file mode 100644
index 0000000000000000000000000000000000000000..27a4efe8c61f7cb19bb1f349a8c21b6e66f1e60e
--- /dev/null
+++ b/src/account/migrations/0007_auto_20180123_1723.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-23 16:23
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0006_auto_20180123_1713'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='groupchoice',
+            old_name='pref_group',
+            new_name='choice',
+        ),
+        migrations.AlterUniqueTogether(
+            name='groupchoice',
+            unique_together=set([('choice', 'profile')]),
+        ),
+    ]
diff --git a/src/account/migrations/0008_auto_20180124_1821.py b/src/account/migrations/0008_auto_20180124_1821.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd3af443879f22344cc51f1334eec41e445948ad
--- /dev/null
+++ b/src/account/migrations/0008_auto_20180124_1821.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-24 17:21
+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 = [
+        ('account', '0007_auto_20180123_1723'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='profile',
+            name='user',
+            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL),
+        ),
+    ]
diff --git a/src/account/migrations/0009_profile_motivation.py b/src/account/migrations/0009_profile_motivation.py
new file mode 100644
index 0000000000000000000000000000000000000000..c9d1e0a2e2aa16abd91adb4970ac860e5e991ffc
--- /dev/null
+++ b/src/account/migrations/0009_profile_motivation.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-24 17:43
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0008_auto_20180124_1821'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='profile',
+            name='motivation',
+            field=models.TextField(null=True),
+        ),
+    ]
diff --git a/src/account/migrations/0010_auto_20180124_1929.py b/src/account/migrations/0010_auto_20180124_1929.py
new file mode 100644
index 0000000000000000000000000000000000000000..2a9b50d5d2e04d41c68b1aba0135774b1bd97bc3
--- /dev/null
+++ b/src/account/migrations/0010_auto_20180124_1929.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2018-01-24 18:29
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0009_profile_motivation'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='profile',
+            name='groups',
+            field=models.ManyToManyField(related_name='profiles', to='account.GroupChoice'),
+        ),
+        migrations.AlterField(
+            model_name='groupchoice',
+            name='choice',
+            field=models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None')], default='N', max_length=10, unique=True),
+        ),
+        migrations.AlterUniqueTogether(
+            name='groupchoice',
+            unique_together=set([]),
+        ),
+        migrations.RemoveField(
+            model_name='groupchoice',
+            name='profile',
+        ),
+    ]
diff --git a/src/account/models.py b/src/account/models.py
index 6b0bb79c09d62f3d045e97ef37b976931cc2cb2d..9c9f6825eabda79f1ca0363ced2c56c691959299 100644
--- a/src/account/models.py
+++ b/src/account/models.py
@@ -1,12 +1,8 @@
 from django.db import models
 from django.contrib.auth.models import User
-from django.core.exceptions import ValidationError
-import datetime
 
 
-class Profile(models.Model):
-    join_date = models.DateField()
-    user = models.OneToOneField(User, on_delete=models.CASCADE)
+class GroupChoice(models.Model):
     TEAMS = (
         ('DT', 'DevTeam'),
         ('NET', 'NeTeam'),
@@ -15,12 +11,20 @@ class Profile(models.Model):
         ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'),
         ('N', 'None'),
     )
-    pref_group = models.CharField(max_length=10, choices=TEAMS, default='None')
+    choice = models.CharField(max_length=10, choices=TEAMS, default='N', unique=True)
+
+    def __str__(self):
+        return self.choice
+
+
+class Profile(models.Model):
+    join_date = models.DateField(auto_now=True)
+    user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)
+    motivation = models.TextField(null=True)
+    nick = models.CharField(max_length=15, blank=True, null=True)
+    signed = models.BooleanField(default=False, null=False)
+    groups = models.ManyToManyField(GroupChoice, related_name='profiles')
     # Homeworks=models.ForeignKey(Homework)
 
     def __str__(self):
         return self.user.username
-
-    def clean(self):
-        if self.join_date > datetime.date.today() or self.join_date < datetime.date(2015, 1, 1):
-            raise ValidationError('Invalid date')
diff --git a/src/account/serializers.py b/src/account/serializers.py
index 62021e9bfca6fed293f5b93d010c95a36150ad7a..92a0828d55c5b8cd3a575ba0d16cb9f4711f87c8 100644
--- a/src/account/serializers.py
+++ b/src/account/serializers.py
@@ -1,8 +1,16 @@
 from rest_framework import serializers
-from . import models
+from account import models
+
+
+class ChoiceSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = models.GroupChoice
+        fields = ('choice', 'profile')
 
 
 class ProfileSerializer(serializers.ModelSerializer):
+    groups = serializers.SlugRelatedField(many=True, slug_field="choice", queryset=models.GroupChoice.objects.all())
+
     class Meta:
         model = models.Profile
-        fields = '__all__'
+        fields = ('id', 'join_date', 'user', 'nick', 'motivation', 'signed', 'groups')
diff --git a/src/account/urls.py b/src/account/urls.py
index 96decfda8d97835f067de97638c465ff3481d11b..ebf85f3d5bdf9885beb1ad7f28d1bce0e6624575 100644
--- a/src/account/urls.py
+++ b/src/account/urls.py
@@ -1,8 +1,7 @@
 from rest_framework import routers
 from . import views
 
-router = routers.DefaultRouter(trailing_slash=False)
-
-router.register(r'profiles', views.ProfileViewSet)
+router = routers.DefaultRouter()
 
+router.register(r'profiles', views.ProfileViewSet, base_name='profile')
 urlpatterns = router.urls
diff --git a/src/account/views.py b/src/account/views.py
index 50a0c059173f7d140f2a930f979cd8f6814abbd0..58c405059a1c21a80a62d1b1de6e658277a0f350 100644
--- a/src/account/views.py
+++ b/src/account/views.py
@@ -1,4 +1,7 @@
 from rest_framework import viewsets
+from rest_framework import permissions
+from rest_framework.response import Response
+from rest_framework.decorators import list_route
 
 from . import models
 from . import serializers
@@ -6,4 +9,14 @@ from . import serializers
 
 class ProfileViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.ProfileSerializer
-    queryset = models.Profile.objects.all()
+    permission_classes = (permissions.IsAuthenticated, )
+
+    def get_queryset(self):
+        user = self.request.user
+        if user.has_perm(permissions.IsAdminUser):
+            return models.Profile.objects.all()
+
+    @list_route(methods=['get'])
+    def me(self, request):
+        serializer = self.serializer_class(request.user.profile)
+        return Response(serializer.data)
diff --git a/src/kszkepzes/urls.py b/src/kszkepzes/urls.py
index 7d26d9b142492fc84a1fb37b63a8f822934854ef..98b91c94f1975a08a991dbfc87a59402a4be3b78 100644
--- a/src/kszkepzes/urls.py
+++ b/src/kszkepzes/urls.py
@@ -20,5 +20,6 @@ urlpatterns = [
     url(r'^admin/', admin.site.urls),
     url('', include('social_django.urls', namespace='social')),
     url(r'^api/v1/', include('stats.urls')),
+    url(r'^api/v1/', include('account.urls')),
 
 ]