diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb
index 80a8c74e06d6d462926e19ebae7c6f9ed4d598c1..d22e70cc12ee8e3e36ce154fb84c882031f91277 100644
--- a/Library/Homebrew/cleaner.rb
+++ b/Library/Homebrew/cleaner.rb
@@ -1,21 +1,23 @@
 # Cleans a newly installed keg.
 # By default:
-# * removes info files
 # * removes .la files
 # * removes empty directories
 # * sets permissions on executables
 class Cleaner
 
-  # Create a cleaner for the given formula and clean its keg
+  # Create a cleaner for the given formula
   def initialize f
-    ObserverPathnameExtension.reset_counts!
-
     @f = f
-    [f.bin, f.sbin, f.lib].select{ |d| d.exist? }.each{ |d| clean_dir d }
+  end
+
+  # Clean the keg of formula @f
+  def clean
+    ObserverPathnameExtension.reset_counts!
+    [@f.bin, @f.sbin, @f.lib].select{ |d| d.exist? }.each{ |d| clean_dir d }
 
-    # Get rid of the directory file, so it no longer bother us at link stage.
-    info_dir_file = f.info + 'dir'
-    if info_dir_file.file? and not f.skip_clean? info_dir_file
+    # Get rid of any info 'dir' files, so they don't conflict at the link stage
+    info_dir_file = @f.info + 'dir'
+    if info_dir_file.file? and not @f.skip_clean? info_dir_file
       puts "rm #{info_dir_file}" if ARGV.verbose?
       info_dir_file.unlink
     end
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index b35eafef6470ad3afb03a10495ff5516c15a62e3..0a6031d4261e67a70c85260e745fea9d3b8586c3 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -490,7 +490,7 @@ class FormulaInstaller
       puts "in the formula."
       return
     end
-    Cleaner.new f
+    Cleaner.new(f).clean
   rescue Exception => e
     opoo "The cleaning step did not complete successfully"
     puts "Still, the installation was successful, so we will link it into your prefix"
diff --git a/Library/Homebrew/test/test_cleaner.rb b/Library/Homebrew/test/test_cleaner.rb
index 3af088cef48d36c9ea3d872738dd94cb57cf210a..6f1d5ce0941c8227ec17f7abb10ad25c513e8a41 100644
--- a/Library/Homebrew/test/test_cleaner.rb
+++ b/Library/Homebrew/test/test_cleaner.rb
@@ -20,7 +20,7 @@ class CleanerTests < Test::Unit::TestCase
     cp "#{TEST_FOLDER}/mach/a.out", @f.bin
     cp Dir["#{TEST_FOLDER}/mach/*.dylib"], @f.lib
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert_equal 0100555, (@f.bin/'a.out').stat.mode
     assert_equal 0100444, (@f.lib/'fat.dylib').stat.mode
@@ -29,7 +29,7 @@ class CleanerTests < Test::Unit::TestCase
   end
 
   def test_prunes_prefix_if_empty
-    Cleaner.new @f
+    Cleaner.new(@f).clean
     assert !@f.prefix.directory?
   end
 
@@ -37,7 +37,7 @@ class CleanerTests < Test::Unit::TestCase
     subdir = @f.bin/'subdir'
     subdir.mkpath
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !@f.bin.directory?
     assert !subdir.directory?
@@ -47,7 +47,7 @@ class CleanerTests < Test::Unit::TestCase
     @f.class.skip_clean 'bin'
     @f.bin.mkpath
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert @f.bin.directory?
   end
@@ -57,7 +57,7 @@ class CleanerTests < Test::Unit::TestCase
     subdir = @f.bin/'subdir'
     subdir.mkpath
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert @f.bin.directory?
     assert subdir.directory?
@@ -70,7 +70,7 @@ class CleanerTests < Test::Unit::TestCase
     dir.mkpath
     ln_s dir.basename, symlink
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !dir.exist?
     assert !symlink.symlink?
@@ -84,7 +84,7 @@ class CleanerTests < Test::Unit::TestCase
     dir.mkpath
     ln_s dir.basename, symlink
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !dir.exist?
     assert !symlink.symlink?
@@ -95,7 +95,7 @@ class CleanerTests < Test::Unit::TestCase
     symlink = @f.prefix/'symlink'
     ln_s 'target', symlink
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !symlink.symlink?
   end
@@ -105,7 +105,7 @@ class CleanerTests < Test::Unit::TestCase
     symlink = @f.prefix/'symlink'
     ln_s 'target', symlink
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert symlink.symlink?
   end
@@ -118,7 +118,7 @@ class CleanerTests < Test::Unit::TestCase
     dir.mkpath
     ln_s dir.basename, symlink
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !dir.exist?
     assert symlink.symlink?
@@ -133,7 +133,7 @@ class CleanerTests < Test::Unit::TestCase
     dir.mkpath
     ln_s dir.basename, symlink
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !dir.exist?
     assert symlink.symlink?
@@ -146,7 +146,7 @@ class CleanerTests < Test::Unit::TestCase
     @f.lib.mkpath
     touch file
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !file.exist?
   end
@@ -158,7 +158,7 @@ class CleanerTests < Test::Unit::TestCase
     @f.lib.mkpath
     touch file
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert file.exist?
   end
@@ -169,7 +169,7 @@ class CleanerTests < Test::Unit::TestCase
     @f.lib.mkpath
     touch file
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert !file.exist?
   end
@@ -180,7 +180,7 @@ class CleanerTests < Test::Unit::TestCase
 
     dir.mkpath
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert dir.directory?
   end
@@ -193,7 +193,7 @@ class CleanerTests < Test::Unit::TestCase
     dir1.mkpath
     dir2.mkpath
 
-    Cleaner.new @f
+    Cleaner.new(@f).clean
 
     assert dir1.exist?
     assert !dir2.exist?