diff --git a/app/assets/javascripts/project_members.js.es6 b/app/assets/javascripts/project_members.js.es6
index 659c57d8b6c76b33010082381060a9a09a8cff90..8b5cb17ac2d61d72331b9ca756ab1b0e4f0677fd 100644
--- a/app/assets/javascripts/project_members.js.es6
+++ b/app/assets/javascripts/project_members.js.es6
@@ -8,12 +8,12 @@
     }
 
     removeListeners() {
-      $('.project_member').off('ajax:success');
+      $('.project_member, .group_member').off('ajax:success');
       $('.js-member-update-control').off('change');
     }
 
     addListeners() {
-      $('.project_member').on('ajax:success', this.removeRow);
+      $('.project_member, .group_member').on('ajax:success', this.removeRow);
       $('.js-member-update-control').on('change', function () {
         $(this).closest('form')
           .trigger("submit.rails");
@@ -24,7 +24,8 @@
       const $target = $(e.target);
 
       if ($target.hasClass('btn-remove')) {
-        $target.fadeOut();
+        console.log('a');
+        $target.closest('.member').fadeOut();
       }
     }
 
diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb
index 6060ddf025b9e44137348b586c599dcdd4d731de..abb92938211ee4e0420a351dee57f6b7abbd7ad3 100644
--- a/app/controllers/projects/project_members_controller.rb
+++ b/app/controllers/projects/project_members_controller.rb
@@ -6,15 +6,16 @@ class Projects::ProjectMembersController < Projects::ApplicationController
 
   def index
     @groups = @project.project_group_links.all
-    @project_members = @project.project_members
+    @project_members = @project.team.members.all
+    @project_members_size = @project_members.size
+    @group_members = @project.group.group_members
     @project_members = @project_members.non_invite unless can?(current_user, :admin_project, @project)
 
     if params[:search].present?
-      users = @project.users.search(params[:search]).to_a
-      @project_members = @project_members.where(user_id: users)
+      @project_members = @project_members.search(params[:search])
     end
 
-    @project_members = @project_members.order('access_level DESC')
+    @project_members = @project_members.page(params[:page])
 
     @requesters = @project.requesters if can?(current_user, :admin_project, @project)
 
diff --git a/app/views/projects/project_members/_team.html.haml b/app/views/projects/project_members/_team.html.haml
index 6a8b28d38869f591ea6fd70e861d746f1af9a14a..23c35f91b6b3b64eedf33a1a3d7415255867570c 100644
--- a/app/views/projects/project_members/_team.html.haml
+++ b/app/views/projects/project_members/_team.html.haml
@@ -2,6 +2,8 @@
   .panel-heading
     Users with access to
     %strong #{@project.name}
-    %span.badge= members.size
+    %span.badge= @project_members_size
   %ul.content-list
-    = render partial: 'shared/members/member', collection: members, as: :member
+    - members.each do |user|
+      - member = @project.team.find_member(user.id)
+      = render 'shared/members/member', member: member
diff --git a/app/views/projects/project_members/index.html.haml b/app/views/projects/project_members/index.html.haml
index 42a23057ff1759961a3c0714b80205b6ad0a3154..85e512a75f4d2cd2e2e6782d872712b702c4e215 100644
--- a/app/views/projects/project_members/index.html.haml
+++ b/app/views/projects/project_members/index.html.haml
@@ -25,3 +25,4 @@
     = render 'groups', groups: @groups
 
   = render 'team', members: @project_members
+  = paginate @project_members, theme: "gitlab"