diff --git a/app/assets/javascripts/project_members.js.es6 b/app/assets/javascripts/project_members.js.es6
index 8b5cb17ac2d61d72331b9ca756ab1b0e4f0677fd..d11467cf6eb4e33fe2975da5cdcd182dbaffd895 100644
--- a/app/assets/javascripts/project_members.js.es6
+++ b/app/assets/javascripts/project_members.js.es6
@@ -1,5 +1,5 @@
 ((w) => {
-  window.gl = window.gl || {};
+  w.gl = w.gl || {};
 
   class ProjectMembers {
     constructor() {
@@ -10,6 +10,7 @@
     removeListeners() {
       $('.project_member, .group_member').off('ajax:success');
       $('.js-member-update-control').off('change');
+      $('.js-edit-member-form').off('ajax:success');
     }
 
     addListeners() {
@@ -17,6 +18,10 @@
       $('.js-member-update-control').on('change', function () {
         $(this).closest('form')
           .trigger("submit.rails");
+        $(this).disable();
+      });
+      $('.js-edit-member-form').on('ajax:success', function () {
+        $(this).find('.js-member-update-control').enable();
       });
     }
 
diff --git a/app/assets/stylesheets/framework/lists.scss b/app/assets/stylesheets/framework/lists.scss
index dfdfe4a3c8978f4f56c57b8c1ecd9cdddc10c9e9..272d37763c1bc49e6519f9e1527219cab1c50df6 100644
--- a/app/assets/stylesheets/framework/lists.scss
+++ b/app/assets/stylesheets/framework/lists.scss
@@ -128,6 +128,10 @@ ul.content-list {
       color: $gl-dark-link-color;
     }
 
+    .member-group-link {
+      color: $blue-normal;
+    }
+
     .description {
       p {
         @include str-truncated;
@@ -166,8 +170,8 @@ ul.content-list {
 
     .member-controls {
       float: none;
-      
-      @media (min-width: $screen-md-min) {
+
+      @media (min-width: $screen-sm-min) {
         float: right;
       }
     }
diff --git a/app/assets/stylesheets/pages/members.scss b/app/assets/stylesheets/pages/members.scss
index 4bc34ac15dfd7b75f01800082f33bec9a70a1d0c..a69af862348ccc0bbca3dd34d1251609d59e9851 100644
--- a/app/assets/stylesheets/pages/members.scss
+++ b/app/assets/stylesheets/pages/members.scss
@@ -8,24 +8,52 @@
   .list-item-name {
     float: none;
 
-    @media (min-width: $screen-md-min) {
+    @media (min-width: $screen-sm-min) {
       float: left;
       width: 50%;
     }
   }
 
   .controls {
-    display: flex;
-    width: 400px;
+    @media (min-width: $screen-sm-min) {
+      display: flex;
+      width: 400px;
+      max-width: 50%;
+    }
   }
 
   .form-horizontal {
-    display: flex;
-    flex: 1;
-    margin-top: 3px;
+    margin-top: 5px;
+
+    @media (min-width: $screen-sm-min) {
+      display: flex;
+      flex: 1;
+      margin-top: 3px;
+    }
+  }
+
+  .btn-remove {
+    width: 100%;
+
+    @media (min-width: $screen-sm-min) {
+      width: auto;
+    }
+  }
+}
+
+.member-form-control {
+  @media (max-width: $screen-xs-max) {
+    padding: 5px 0;
+    margin-left: 0;
+    margin-right: 0;
   }
 
-  .member-form-control {
+  @media (min-width: $screen-sm-min) {
     width: 50%;
   }
 }
+
+.member-access-text {
+  margin-left: auto;
+  line-height: 43px;
+}
diff --git a/app/views/groups/group_members/update.js.haml b/app/views/groups/group_members/update.js.haml
index 742f9d7a433edd00e623c4d5c3d317405244ca1b..de8f53b6b52ba27088c628c6970303ace0a6fbc7 100644
--- a/app/views/groups/group_members/update.js.haml
+++ b/app/views/groups/group_members/update.js.haml
@@ -1,3 +1,3 @@
 :plain
-  $("##{dom_id(@group_member)}").replaceWith('#{escape_javascript(render('shared/members/member', member: @group_member))}');
-  new MemberExpirationDate();
+  var $listItem = $('#{escape_javascript(render('shared/members/member', member: @group_member))}');
+  $("##{dom_id(@group_member)} .list-item-name").replaceWith($listItem.find('.list-item-name'));
diff --git a/app/views/projects/project_members/_team.html.haml b/app/views/projects/project_members/_team.html.haml
index 23c35f91b6b3b64eedf33a1a3d7415255867570c..2af9fe0519c4063c5129d8aabdb922ee7eff4fee 100644
--- a/app/views/projects/project_members/_team.html.haml
+++ b/app/views/projects/project_members/_team.html.haml
@@ -6,4 +6,4 @@
   %ul.content-list
     - members.each do |user|
       - member = @project.team.find_member(user.id)
-      = render 'shared/members/member', member: member
+      = render 'shared/members/member', member: member, user: user
diff --git a/app/views/shared/members/_group.html.haml b/app/views/shared/members/_group.html.haml
index 0502de5210b5ad6dac6991c225b07bee4e6a7ff0..5d54195646ca373bcf362e204c81449016cc1049 100644
--- a/app/views/shared/members/_group.html.haml
+++ b/app/views/shared/members/_group.html.haml
@@ -17,7 +17,10 @@
       .prepend-left-5.append-right-10.clearable-input.member-form-control
         = text_field_tag 'group_link[expires_at]', group_link.expires_at, class: 'form-control js-access-expiration-date js-member-update-control', placeholder: 'Expiration date', id: "member_expires_at_#{group.id}"
         %i.clear-icon.js-clear-input
-    = link_to icon('trash'), namespace_project_group_link_path(@project.namespace, @project, group_link),
+    = link_to namespace_project_group_link_path(@project.namespace, @project, group_link),
       remote: true,
       method: :delete,
-      class: 'btn btn-remove'
+      class: 'btn btn-remove' do
+      %span.visible-xs-block
+        Delete
+      = icon('trash', class: 'hidden-xs')
diff --git a/app/views/shared/members/_member.html.haml b/app/views/shared/members/_member.html.haml
index 800badc051a588062c895874a6448612a102674c..4518e84fe3459cda8f96e45f37c31b5be91ca372 100644
--- a/app/views/shared/members/_member.html.haml
+++ b/app/views/shared/members/_member.html.haml
@@ -1,6 +1,6 @@
 - show_roles = local_assigns.fetch(:show_roles, true)
 - show_controls = local_assigns.fetch(:show_controls, true)
-- user = member.user
+- user = local_assigns.fetch(:user, member.user)
 
 %li.member{ class: dom_class(member), id: dom_id(member) }
   %span{ class: ("list-item-name" if show_controls) }
@@ -11,12 +11,16 @@
       %span.cgray= user.to_reference
 
       - if user == current_user
-        %span.label.label-success It's you
+        %span.label.label-success.prepend-left-5 It's you
 
       - if user.blocked?
         %label.label.label-danger
           %strong Blocked
 
+      - if member.respond_to?(:group) && !@group
+        = link_to member.group, class: "member-group-link prepend-left-5" do
+          = "ยท #{member.group.name}"
+
       .cgray
         - if member.request?
           Requested
@@ -40,11 +44,14 @@
   - if show_roles
     .controls.member-controls
       - if show_controls
-        = form_for member, remote: true, html: { class: 'form-horizontal' } do |f|
-          = f.select :access_level, options_for_select(member.class.access_level_roles, member.access_level), {}, class: 'form-control member-form-control append-right-5 js-member-update-control', id: "member_access_level_#{member.id}", disabled: !can?(current_user, action_member_permission(:update, member), member)
-          .prepend-left-5.append-right-10.clearable-input.member-form-control
-            = f.text_field :expires_at, class: 'form-control js-access-expiration-date js-member-update-control', placeholder: 'Expiration date', id: "member_expires_at_#{member.id}", disabled: !can?(current_user, action_member_permission(:update, member), member)
-            %i.clear-icon.js-clear-input
+        - if user != current_user
+          = form_for member, remote: true, html: { class: 'form-horizontal js-edit-member-form' } do |f|
+            = f.select :access_level, options_for_select(member.class.access_level_roles, member.access_level), {}, class: 'form-control member-form-control append-right-5 js-member-update-control', id: "member_access_level_#{member.id}", disabled: !can?(current_user, action_member_permission(:update, member), member)
+            .prepend-left-5.append-right-10.clearable-input.member-form-control
+              = f.text_field :expires_at, class: 'form-control js-access-expiration-date js-member-update-control', placeholder: 'Expiration date', id: "member_expires_at_#{member.id}", disabled: !can?(current_user, action_member_permission(:update, member), member)
+              %i.clear-icon.js-clear-input
+        - else
+          %span.member-access-text= member.human_access
         - if !user && can?(current_user, action_member_permission(:admin, member), member.source)
           = link_to 'Resend invite', polymorphic_path([:resend_invite, member]),
                     method: :post,
@@ -63,9 +70,12 @@
                       data: { confirm: leave_confirmation_message(member.source) },
                       class: 'btn btn-remove'
           - else
-            = link_to icon('trash'), member,
+            = link_to member,
                       remote: true,
                       method: :delete,
                       data: { confirm: remove_member_message(member) },
                       class: 'btn btn-remove',
-                      title: remove_member_title(member)
+                      title: remove_member_title(member) do
+              %span.visible-xs-block
+                Delete
+              = icon('trash', class: 'hidden-xs')