diff --git a/accounts/migrations/0004_peers.py b/accounts/migrations/0004_peers.py
index 72d37b11d6753bc97c6e94182d0a711589fc87c4..f411858ad38002dd756779216e7e8588a5494241 100644
--- a/accounts/migrations/0004_peers.py
+++ b/accounts/migrations/0004_peers.py
@@ -11,10 +11,11 @@ class Migration(DataMigration):
             user.peers.add(user.peer)
             user.save()
 
-
-
     def backwards(self, orm):
-        pass
+        for user in orm.UserProfile.objects.all():
+            user.peer = user.peers.all()[0]
+            user.save()
+
 
     models = {
         'accounts.userprofile': {
diff --git a/accounts/migrations/0005_auto__chg_field_userprofile_peer.py b/accounts/migrations/0005_auto__chg_field_userprofile_peer.py
new file mode 100644
index 0000000000000000000000000000000000000000..f0ddfcffba3c22f33068a7d4d9ee3dbdf2751e99
--- /dev/null
+++ b/accounts/migrations/0005_auto__chg_field_userprofile_peer.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+
+        # Changing field 'UserProfile.peer'
+        db.alter_column('accounts_userprofile', 'peer_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['peers.Peer'], null=True))
+
+    def backwards(self, orm):
+
+        # Changing field 'UserProfile.peer'
+        db.alter_column('accounts_userprofile', 'peer_id', self.gf('django.db.models.fields.related.ForeignKey')(default='', to=orm['peers.Peer']))
+
+    models = {
+        'accounts.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'peer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['peers.Peer']", 'null': 'True', 'blank': 'True'}),
+            'peers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_profile'", 'symmetrical': 'False', 'to': "orm['peers.Peer']"}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
+        },
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'peers.peer': {
+            'Meta': {'ordering': "['peer_name']", 'object_name': 'Peer', 'db_table': "u'peer'"},
+            'domain_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'networks': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['peers.PeerRange']", 'null': 'True', 'blank': 'True'}),
+            'peer_as': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'peer_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'peer_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'peer_tag': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+            'techc_emails': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['peers.TechcEmail']", 'null': 'True', 'blank': 'True'})
+        },
+        'peers.peerrange': {
+            'Meta': {'ordering': "['network']", 'object_name': 'PeerRange', 'db_table': "u'peer_range'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'network': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+        },
+        'peers.techcemail': {
+            'Meta': {'object_name': 'TechcEmail', 'db_table': "'techc_email'"},
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '352', 'db_column': "'email'"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+        }
+    }
+
+    complete_apps = ['accounts']
\ No newline at end of file
diff --git a/accounts/migrations/0006_auto__del_field_userprofile_peer.py b/accounts/migrations/0006_auto__del_field_userprofile_peer.py
new file mode 100644
index 0000000000000000000000000000000000000000..a587b6368dced463710718a7a9111e7daf106892
--- /dev/null
+++ b/accounts/migrations/0006_auto__del_field_userprofile_peer.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Deleting field 'UserProfile.peer'
+        db.delete_column('accounts_userprofile', 'peer_id')
+
+
+    def backwards(self, orm):
+        # Adding field 'UserProfile.peer'
+        db.add_column('accounts_userprofile', 'peer',
+                      self.gf('django.db.models.fields.related.ForeignKey')(to=orm['peers.Peer'], null=True, blank=True),
+                      keep_default=False)
+
+
+    models = {
+        'accounts.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'peers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'user_profile'", 'symmetrical': 'False', 'to': "orm['peers.Peer']"}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
+        },
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'peers.peer': {
+            'Meta': {'ordering': "['peer_name']", 'object_name': 'Peer', 'db_table': "u'peer'"},
+            'domain_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'networks': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['peers.PeerRange']", 'null': 'True', 'blank': 'True'}),
+            'peer_as': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'peer_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'peer_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'peer_tag': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+            'techc_emails': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['peers.TechcEmail']", 'null': 'True', 'blank': 'True'})
+        },
+        'peers.peerrange': {
+            'Meta': {'ordering': "['network']", 'object_name': 'PeerRange', 'db_table': "u'peer_range'"},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'network': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+        },
+        'peers.techcemail': {
+            'Meta': {'object_name': 'TechcEmail', 'db_table': "'techc_email'"},
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '352', 'db_column': "'email'"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+        }
+    }
+
+    complete_apps = ['accounts']
\ No newline at end of file
diff --git a/accounts/models.py b/accounts/models.py
index 78858d7f940a5c18f915faeee9303f253c7eea7c..5b9a7f7ca3881245f4aef7abee1542b45382c1ef 100644
--- a/accounts/models.py
+++ b/accounts/models.py
@@ -24,7 +24,6 @@ from peers.models import Peer
 
 class UserProfile(models.Model):
     user = models.OneToOneField(User)
-    peer = models.ForeignKey(Peer)
     peers = models.ManyToManyField(Peer, related_name='user_profile')
 
     class Meta:
diff --git a/accounts/views.py b/accounts/views.py
index d31773050bc56805d0ac03d19f1534e0c91c00ce..35c0e280b9657ec9f13f5f8a82bc2f3b33da384b 100644
--- a/accounts/views.py
+++ b/accounts/views.py
@@ -72,8 +72,6 @@ def activate(request, activation_key):
             )
 
         form = UserProfileForm(instance=userProfile)
-        form.fields['user'] = forms.ModelChoiceField(queryset=User.objects.filter(pk=rp.user.pk), empty_label=None)
-        form.fields['peer'] = forms.ModelChoiceField(queryset=Peer.objects.all(), empty_label=None)
 
         return render(
             request,
@@ -90,7 +88,8 @@ def activate(request, activation_key):
         try:
             user = User.objects.get(pk=request_data['user'])
             up = user.get_profile()
-            up.peer = Peer.objects.get(pk=request_data['peer'])
+            for peer in request_data['peers']:
+                up.peers.add(Peer.objects.get(pk=peer))
             up.save()
 
         except:
diff --git a/flowspec/admin.py b/flowspec/admin.py
index c482122a49833f05e7dfca58fd55158072e1eb28..18c9a5193d5f009b288a46388832d3ac5d02a394 100644
--- a/flowspec/admin.py
+++ b/flowspec/admin.py
@@ -86,7 +86,7 @@ class UserProfileAdmin(UserAdmin):
 
     def get_userprofile_peers(self, instance):
         # instance is User instance
-        peers = instance.get_profile().peers.all()
+        peers = instance.userprofile.peers.all()
         return ''.join(('%s, ' % (peer.peer_name)) for peer in peers)[:-2]
 
     get_userprofile_peers.short_description = "User Peer(s)"
diff --git a/flowspec/forms.py b/flowspec/forms.py
index 33ce349c67923052c1682e3630658a9f410a9051..aec1d3027af3f9501fbec502e76731be747741ad 100644
--- a/flowspec/forms.py
+++ b/flowspec/forms.py
@@ -40,6 +40,7 @@ from django.core.mail import send_mail
 
 
 class UserProfileForm(forms.ModelForm):
+
     class Meta:
         model = UserProfile
 
@@ -99,7 +100,7 @@ class RouteForm(forms.ModelForm):
         else:
             peers = user.userprofile.peers.all()
         existing_routes = Route.objects.all()
-        existing_routes = existing_routes.filter(applier__userprofile__peer__in=peers)
+        existing_routes = existing_routes.filter(applier__userprofile__peers__in=peers)
         name = self.cleaned_data.get('name', None)
         protocols = self.cleaned_data.get('protocol', None)
         source = self.cleaned_data.get('source', None)
diff --git a/flowspec/views.py b/flowspec/views.py
index 9980e70df7e7ee56fb939f9cc9204a6c9c77e81b..885b8fec80ffe304498e6103fddd8a528f59e7e3 100644
--- a/flowspec/views.py
+++ b/flowspec/views.py
@@ -164,7 +164,7 @@ def group_routes(request):
 def group_routes_ajax(request):
     all_group_routes = []
     try:
-        peers = request.user.get_profile().peers.prefetch_related('userprofile', 'userprofile_user', 'networks')
+        peers = request.user.get_profile().peers.prefetch_related('networks')
     except UserProfile.DoesNotExist:
         error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % request.user.username
         return render(
@@ -760,8 +760,6 @@ def selectinst(request):
                 },
             )
         else:
-            form.fields['user'] = forms.ModelChoiceField(queryset=User.objects.filter(pk=user.pk), empty_label=None)
-            form.fields['institution'] = forms.ModelChoiceField(queryset=Peer.objects.all(), empty_label=None)
             return render(
                 request,
                 'registration/select_institution.html',
diff --git a/templates/registration/activate.html b/templates/registration/activate.html
index 3e734abd7c33003657949abadbedc1779c7eb77b..2c4903146c4ba6587ce43875842b89c549ab5824 100644
--- a/templates/registration/activate.html
+++ b/templates/registration/activate.html
@@ -31,11 +31,11 @@
                         <!-- /.panel-heading -->
                         <div class="panel-body">
                         						<div class="alert {% if account %}alert-success{% else %}alert-info{% endif %}">
-					{% if account %}
-					    {{account}} {% trans "succesfully activated" %}
-					{% else %}
-					    {% trans "The user has probably been already activated." %}
-					{% endif %}
+                      					{% if account %}
+                      					    {{account}} {% trans "succesfully activated" %}
+                      					{% else %}
+                      					    {% trans "The user has probably been already activated." %}
+                      					{% endif %}
                         	</div>
                         </div>
                        </div>
diff --git a/templates/registration/activate_edit.html b/templates/registration/activate_edit.html
index 5ccb4435a4ed1a760c40e8dc9553b1a186928feb..7b342013e8649df74b60351b961304d03ba4a263 100644
--- a/templates/registration/activate_edit.html
+++ b/templates/registration/activate_edit.html
@@ -12,6 +12,8 @@
 		}
 }
 </style>
+<link href="{{STATIC_URL}}js/select2/select2.css" rel="stylesheet">
+<link href="{{STATIC_URL}}js/select2/select2-bootstrap.css" rel="stylesheet">
 {% endblock %}
 
        {% block contentplaceholder %}
@@ -43,27 +45,35 @@
 		           					 {% endif %}
 		       					 </div>
 							</div>
-							<div class="form-group {% if form.peer.errors %} has-error {% endif %}">
+							<div class="form-group {% if form.peers.errors %} has-error {% endif %}">
 								<label class="col-md-2 control-label" for="id_peer"><b>{% trans "Institution" %}</b></label>
 								<div class="col-md-8">
-		            				{% render_field form.peer class+="form-control"  %}
-		            				{% if form.peer.errors %} <span class="help-block"> {{ form.peer.errors|join:", " }} </span>
+		            				{% render_field form.peers class+="form-control"  %}
+		            				{% if form.peers.errors %} <span class="help-block"> {{ form.peers.errors|join:", " }} </span>
 		           					 {% endif %}
 		       					 </div>
 							</div>
 
 							<div class="form-group">
-			 	<div class="col-md-2"></div>
-			 	 <div class="col-md-8">
-			<button type="submit" id="applybutton" value="{% trans 'Apply' %}" class="btn btn-md btn-primary">{% trans "Activate" %}</button>
-				</div>
-			</div>
+				 	<div class="col-md-2"></div>
+				 	 	<div class="col-md-8">
+							<button type="submit" id="applybutton" value="{% trans 'Apply' %}" class="btn btn-md btn-primary">{% trans "Activate" %}</button>
+						</div>
+					</div>
 
-            			</div>
-            			</div>
-            			</div>
-            			</div>
+            	</div>
+        	</div>
+    	</div>
+	</div>
 </div>
 
 	{% endblock %}
 
+{% block pagejsbottom %}
+	<script type="text/javascript" src="{{STATIC_URL}}js/select2/select2.js"></script>
+	<script>
+		$(document).ready( function(){
+			$('#id_peers').select2();
+		});
+	</script>
+{% endblock %}
diff --git a/templates/registration/select_institution.html b/templates/registration/select_institution.html
index 1a173693cead13b9088b0aaf65aad10bf459a41e..bc1e292aa39f0b92ba90c76e81f8512cf9f3f74a 100644
--- a/templates/registration/select_institution.html
+++ b/templates/registration/select_institution.html
@@ -12,6 +12,8 @@
 		}
 }
 </style>
+<link href="{{STATIC_URL}}js/select2/select2.css" rel="stylesheet">
+<link href="{{STATIC_URL}}js/select2/select2-bootstrap.css" rel="stylesheet">
 {% endblock %}
 
        {% block contentplaceholder %}
@@ -38,11 +40,11 @@
 							<p class="error">{{ form.non_field_errors}}</p>
 							{% endif %}
 							<div style="display: none">{{form.user}}</div>
-							<div class="form-group {% if form.peer.errors %} has-error {% endif %}">
+							<div class="form-group {% if form.peers.errors %} has-error {% endif %}">
 								<label class="col-md-2 control-label" for="id_peer"><b>{% trans "Institution" %}</b></label>
 								<div class="col-md-8">
-		            				{% render_field form.peer class+="form-control"  %}
-		            				{% if form.peer.errors %} <span class="help-block"> {{ form.peer.errors|join:", " }} </span>
+		            				{% render_field form.peers class+="form-control"  %}
+		            				{% if form.peers.errors %} <span class="help-block"> {{ form.peers.errors|join:", " }} </span>
 		           					 {% endif %}
 		       					 </div>
 							</div>
@@ -63,3 +65,13 @@
 	{% endblock %}
 
 
+
+
+{% block pagejsbottom %}
+	<script type="text/javascript" src="{{STATIC_URL}}js/select2/select2.js"></script>
+	<script>
+		$(document).ready( function(){
+			$('#id_peers').select2();
+		});
+	</script>
+{% endblock %}