diff --git a/app/models/.project.rb.swo b/app/models/.project.rb.swo
deleted file mode 100644
index 5d264ccfaaa42e0a6f93323aa8baf0a4e1fa7cf3..0000000000000000000000000000000000000000
Binary files a/app/models/.project.rb.swo and /dev/null differ
diff --git a/app/models/project.rb b/app/models/project.rb
index 3d3fd6f76a2d4a454df8da2278a8c2355397f7a8..9400d8a17af44d94ef48c35424437c0c04585fa8 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -89,12 +89,8 @@ class Project < ActiveRecord::Base
   # checks if the language main language of the project changed
   before_save :check_main_language
   def check_main_language
-    if !repository.empty? && self.changed?
-      language = Linguist::Repository.new(
-        repository.rugged,
-        repository.rugged.head.target_id).language
-
-        self.main_language = language
+    if commit_count.changed?
+      self.main_language = repository.main_language
     end
   end
 
@@ -957,4 +953,14 @@ class Project < ActiveRecord::Base
   def wiki
     @wiki ||= ProjectWiki.new(self, self.owner)
   end
+
+  def main_language
+    language = read_attributes(:main_language)
+
+    return language if language
+
+    update_attributes(main_language: repository.main_language)
+
+    read_attributes(:main_language)
+  end
 end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index c135ab61f6a00f66b106d580cbacfd02ca3851d4..ff48f993d422ea463445a7247353708b8849a6ae 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -812,6 +812,12 @@ class Repository
     raw_repository.ls_files(actual_ref)
   end
 
+  def main_language
+    unless empty?
+      Linguist::Repository.new(rugged, rugged.head.target_id).language
+    end
+  end
+
   private
 
   def cache
diff --git a/db/migrate/20160229193553_add_main_language_to_repository.rb b/db/migrate/20160229193553_add_main_language_to_repository.rb
index da24abd2f04310bb1c675c392ebd825e2533ec0c..b5446c6a4472c43f5eaf69a83487cc0a95d9edec 100644
--- a/db/migrate/20160229193553_add_main_language_to_repository.rb
+++ b/db/migrate/20160229193553_add_main_language_to_repository.rb
@@ -1,21 +1,5 @@
 class AddMainLanguageToRepository < ActiveRecord::Migration
-  require 'rugged'
-  require 'linguist'
-
-  def up
-    add_column :projects, :main_language, :string, default: nil
-
-    Project.all.each do |project|
-      unless project.repository.empty?
-        language = Linguist::Repository.new(
-          project.repository.rugged,
-          project.repository.rugged.head.target_id).language
-        project.update_attributes(main_language: language)
-      end
-    end
-  end
-
-  def down
-    remove_column :projects, :main_language
+  def change
+    add_column :projects, :main_language, :string
   end
 end