diff --git a/circle/dashboard/forms.py b/circle/dashboard/forms.py
index 1b935dd..00cc3b1 100644
--- a/circle/dashboard/forms.py
+++ b/circle/dashboard/forms.py
@@ -39,8 +39,7 @@ from django.contrib.auth.forms import UserCreationForm as OrgUserCreationForm
 from django.forms.widgets import TextInput, HiddenInput
 from django.template import Context
 from django.template.loader import render_to_string
-from django.utils.translation import ugettext as _
-from django.utils.translation import ugettext_lazy
+from django.utils.translation import ugettext_lazy as _
 from sizefield.widgets import FileSizeWidget
 from django.core.urlresolvers import reverse_lazy
 
@@ -1142,9 +1141,17 @@ vm_search_choices = (
 class VmListSearchForm(forms.Form):
     s = forms.CharField(widget=forms.TextInput(attrs={
         'class': "form-control input-tags",
-        'placeholder': ugettext_lazy("Search...")
+        'placeholder': _("Search...")
     }))
 
     stype = forms.ChoiceField(vm_search_choices, widget=forms.Select(attrs={
         'class': "btn btn-default input-tags",
     }))
+
+    def __init__(self, *args, **kwargs):
+        super(VmListSearchForm, self).__init__(*args, **kwargs)
+        # set initial value, otherwise it would be overwritten by request.GET
+        if not self.data.get("stype"):
+            data = self.data.copy()
+            data['stype'] = 2
+            self.data = data
diff --git a/circle/dashboard/static/dashboard/dashboard.js b/circle/dashboard/static/dashboard/dashboard.js
index db58574..a388416 100644
--- a/circle/dashboard/static/dashboard/dashboard.js
+++ b/circle/dashboard/static/dashboard/dashboard.js
@@ -258,14 +258,15 @@ $(function () {
       html += '<div class="list-group-item list-group-item-last">' + gettext("No result") + '</div>';
     $("#dashboard-vm-list").html(html);
     $('.title-favourite').tooltip({'placement': 'right'});
+  });
 
-    // if there is only one result and ENTER is pressed redirect
-    if(e.keyCode == 13 && search_result.length == 1) {
-      window.location.href = "/dashboard/vm/" + search_result[0].pk + "/";
-    }
-    if(e.keyCode == 13 && search_result.length > 1 && input.length > 0) {
-      window.location.href = "/dashboard/vm/list/?s=" + input + "&stype=2";
+  $("#dashboard-vm-search-form").submit(function() {
+    var vm_list_items = $("#dashboard-vm-list .list-group-item");
+    if(vm_list_items.length == 1) {
+      window.location.href = vm_list_items.first().prop("href");
+      return false;
     }
+    return true;
   });
 
   /* search for nodes */
diff --git a/circle/dashboard/templates/dashboard/index-vm.html b/circle/dashboard/templates/dashboard/index-vm.html
index 6b93549..66622e5 100644
--- a/circle/dashboard/templates/dashboard/index-vm.html
+++ b/circle/dashboard/templates/dashboard/index-vm.html
@@ -46,12 +46,15 @@
     </style>
     <div href="#" class="list-group-item list-group-footer">
       <div class="row">
-        <div class="col-sm-6 col-xs-6 input-group input-group-sm">
-          <input id="dashboard-vm-search-input" type="text" class="form-control" placeholder="{% trans "Search..." %}" />
-          <div class="input-group-btn">
-            <button type="submit" class="form-control btn btn-primary"><i class="fa fa-search"></i></button>
+        <form action="{% url "dashboard.views.vm-list" %}" method="GET" id="dashboard-vm-search-form">
+          <div class="col-sm-6 col-xs-6 input-group input-group-sm">
+            <input id="dashboard-vm-search-input" type="text" class="form-control" name="s" 
+            placeholder="{% trans "Search..." %}" />
+            <div class="input-group-btn">
+              <button type="submit" class="form-control btn btn-primary"><i class="fa fa-search"></i></button>
+            </div>
           </div>
-        </div>
+        </form>
         <div class="col-sm-6 text-right">
           <a class="btn btn-primary btn-xs" href="{% url "dashboard.views.vm-list" %}">
             <i class="fa fa-chevron-circle-right"></i>
diff --git a/circle/dashboard/templates/dashboard/vm-list.html b/circle/dashboard/templates/dashboard/vm-list.html
index fdce8d9..be27eb1 100644
--- a/circle/dashboard/templates/dashboard/vm-list.html
+++ b/circle/dashboard/templates/dashboard/vm-list.html
@@ -31,6 +31,7 @@
       <div class="panel-body vm-list-group-control">
         <p>
         <strong>{% trans "Group actions" %}</strong>
+        <!--
         <button id="vm-list-group-select-all" class="btn btn-info btn-xs">{% trans "Select all" %}</button>
         <a href="#" class="btn btn-default btn-xs" title="{% trans "Migrate" %}" disabled>
           <i class="fa fa-truck"></i>
@@ -41,6 +42,7 @@
         <a href="#" class="btn btn-default btn-xs" title="{% trans "Shutdown" %}" disabled>
           <i class="fa fa-power-off"></i>
         </a>
+        -->
         <a title="{% trans "Destroy" %}" id="vm-list-group-delete" disabled href="#" class="btn btn-danger btn-xs" disabled>
           <i class="fa fa-times"></i>
         </a>
diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py
index 93ae865..d008a8b 100644
--- a/circle/dashboard/views.py
+++ b/circle/dashboard/views.py
@@ -1554,7 +1554,7 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView):
 
     def get_context_data(self, *args, **kwargs):
         context = super(VmList, self).get_context_data(*args, **kwargs)
-        context['search_form'] = VmListSearchForm(self.request.GET)
+        context['search_form'] = self.search_form
         return context
 
     def get(self, *args, **kwargs):
@@ -1576,6 +1576,8 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView):
                 content_type="application/json",
             )
         else:
+            self.search_form = VmListSearchForm(self.request.GET)
+            self.search_form.full_clean()
             return super(VmList, self).get(*args, **kwargs)
 
     def get_queryset(self):
@@ -1597,10 +1599,11 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView):
                                                           ).distinct()
 
     def create_default_queryset(self):
-        stype = self.request.GET.get("stype", "0")
-        superuser = stype == "2"
-        shared = stype == "1"
-        level = "owner" if stype == "0" else "user"
+        cleaned_data = self.search_form.cleaned_data
+        stype = cleaned_data.get('stype', 2)
+        superuser = stype == 2
+        shared = stype == 1
+        level = "owner" if stype == 0 else "user"
         queryset = Instance.get_objects_with_level(
             level, self.request.user,
             group_also=shared, disregard_superuser=not superuser,