diff --git a/app/controllers/settings/exports/base_controller.rb b/app/controllers/settings/exports/base_controller.rb
index 0b790959fec3973e36ef124fd082a1a03a30fb9e..c082ed806c44018348c73f99841a452fe9bcb2f6 100644
--- a/app/controllers/settings/exports/base_controller.rb
+++ b/app/controllers/settings/exports/base_controller.rb
@@ -6,7 +6,7 @@ module Settings
       before_action :authenticate_user!
 
       def index
-        export_data = Export.new(export_accounts).to_csv
+        @export = Export.new(current_account)
 
         respond_to do |format|
           format.csv { send_data export_data, filename: export_filename }
diff --git a/app/controllers/settings/exports/blocked_accounts_controller.rb b/app/controllers/settings/exports/blocked_accounts_controller.rb
index 9c4bcaa5320f3ed4892ce68bf0f96d6c1abb4d7f..f1115b21e31acf45caabf402387956f437d94ce1 100644
--- a/app/controllers/settings/exports/blocked_accounts_controller.rb
+++ b/app/controllers/settings/exports/blocked_accounts_controller.rb
@@ -5,8 +5,8 @@ module Settings
     class BlockedAccountsController < BaseController
       private
 
-      def export_accounts
-        current_account.blocking
+      def export_data
+        @export.to_blocked_accounts_csv
       end
     end
   end
diff --git a/app/controllers/settings/exports/following_accounts_controller.rb b/app/controllers/settings/exports/following_accounts_controller.rb
index 8d06bcc954932027ad7c54d028f3192de264b503..0011d2463a183ec10b1b75f1c56504f320a6ff3b 100644
--- a/app/controllers/settings/exports/following_accounts_controller.rb
+++ b/app/controllers/settings/exports/following_accounts_controller.rb
@@ -5,8 +5,8 @@ module Settings
     class FollowingAccountsController < BaseController
       private
 
-      def export_accounts
-        current_account.following
+      def export_data
+        @export.to_following_accounts_csv
       end
     end
   end
diff --git a/app/controllers/settings/exports/muted_accounts_controller.rb b/app/controllers/settings/exports/muted_accounts_controller.rb
index a77a9af6d6a45d31ede0e7ec9dfa0ac96de89d49..dfe72cfcb9e613ef035d2a7de9e79be0cf46f754 100644
--- a/app/controllers/settings/exports/muted_accounts_controller.rb
+++ b/app/controllers/settings/exports/muted_accounts_controller.rb
@@ -5,8 +5,8 @@ module Settings
     class MutedAccountsController < BaseController
       private
 
-      def export_accounts
-        current_account.muting
+      def export_data
+        @export.to_muted_accounts_csv
       end
     end
   end
diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb
index 77dea32316452c7de0634610d922f3bdff8e4295..ae62f00c1e2ccc877d1a399288aff389259f7ac0 100644
--- a/app/controllers/settings/exports_controller.rb
+++ b/app/controllers/settings/exports_controller.rb
@@ -6,9 +6,6 @@ class Settings::ExportsController < ApplicationController
   before_action :authenticate_user!
 
   def show
-    @total_storage = current_account.media_attachments.sum(:file_file_size)
-    @total_follows = current_account.following.count
-    @total_blocks  = current_account.blocking.count
-    @total_mutes = current_account.muting.count
+    @export = Export.new(current_account)
   end
 end
diff --git a/app/models/export.rb b/app/models/export.rb
index cd1a58eb6dd852c5c851cfb28d38884b509fbc96..f0d5dd2557dd8d68959eec21fdbd221273a3ac7d 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -2,13 +2,43 @@
 require 'csv'
 
 class Export
-  attr_reader :accounts
+  attr_reader :account
 
-  def initialize(accounts)
-    @accounts = accounts
+  def initialize(account)
+    @account = account
   end
 
-  def to_csv
+  def to_blocked_accounts_csv
+    to_csv account.blocking
+  end
+
+  def to_muted_accounts_csv
+    to_csv account.muting
+  end
+
+  def to_following_accounts_csv
+    to_csv account.following
+  end
+
+  def total_storage
+    account.media_attachments.sum(:file_file_size)
+  end
+
+  def total_follows
+    account.following.count
+  end
+
+  def total_blocks
+    account.blocking.count
+  end
+
+  def total_mutes
+    account.muting.count
+  end
+
+  private
+
+  def to_csv(accounts)
     CSV.generate do |csv|
       accounts.each do |account|
         csv << [(account.local? ? account.local_username_and_domain : account.acct)]
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index 51be40fb623e978b93c4b197edb5fe758fb4e78a..f2f6f95563efd7730fe7a36a025010ae99d40707 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -5,17 +5,17 @@
   %tbody
     %tr
       %th= t('exports.storage')
-      %td= number_to_human_size @total_storage
+      %td= number_to_human_size @export.total_storage
       %td
     %tr
       %th= t('exports.follows')
-      %td= @total_follows
+      %td= @export.total_follows
       %td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv)
     %tr
       %th= t('exports.blocks')
-      %td= @total_blocks
+      %td= @export.total_blocks
       %td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv)
     %tr
       %th= t('exports.mutes')
-      %td= @total_mutes
+      %td= @export.total_mutes
       %td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv)
diff --git a/spec/controllers/settings/exports_controller_spec.rb b/spec/controllers/settings/exports_controller_spec.rb
index ff98f3ad945c3f08603634f4ad4dee115081f533..2be6e4744fa2da0d771e523e0c2a4e994be76cc5 100644
--- a/spec/controllers/settings/exports_controller_spec.rb
+++ b/spec/controllers/settings/exports_controller_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 describe Settings::ExportsController do
+  render_views
+
   before do
     sign_in Fabricate(:user), scope: :user
   end
@@ -8,6 +10,7 @@ describe Settings::ExportsController do
   describe 'GET #show' do
     it 'returns http success' do
       get :show
+
       expect(response).to have_http_status(:success)
     end
   end