diff --git a/Library/Homebrew/cmd/--cache.rb b/Library/Homebrew/cmd/--cache.rb
index 377e7dc49a8232159f4ebd22ebfa47cf81fb892e..aedd58386040aeb00d055d33923aae670278b7c9 100644
--- a/Library/Homebrew/cmd/--cache.rb
+++ b/Library/Homebrew/cmd/--cache.rb
@@ -2,8 +2,7 @@
 
 require "fetch"
 require "cli/parser"
-require "cask/cmd"
-require "cask/cask_loader"
+require "cask/download"
 
 module Homebrew
   extend Fetch
@@ -37,29 +36,27 @@ module Homebrew
 
     if args.no_named?
       puts HOMEBREW_CACHE
-    elsif args.formula?
-      args.named.each do |name|
-        print_formula_cache name, args: args
-      end
+      return
+    end
+
+    formulae_or_casks = if args.formula?
+      args.formulae
     elsif args.cask?
-      args.named.each do |name|
-        print_cask_cache name
-      end
+      args.loaded_casks
     else
-      args.named.each do |name|
-        print_formula_cache name, args: args
-      rescue FormulaUnavailableError
-        begin
-          print_cask_cache name
-        rescue Cask::CaskUnavailableError
-          odie "No available formula or cask with the name \"#{name}\""
-        end
+      args.formulae_and_casks
+    end
+
+    formulae_or_casks.each do |formula_or_cask|
+      if formula_or_cask.is_a? Formula
+        print_formula_cache formula_or_cask, args: args
+      else
+        print_cask_cache formula_or_cask
       end
     end
   end
 
-  def print_formula_cache(name, args:)
-    formula = Formulary.factory(name, force_bottle: args.force_bottle?, flags: args.flags_only)
+  def print_formula_cache(formula, args:)
     if fetch_bottle?(formula, args: args)
       puts formula.bottle.cached_download
     else
@@ -67,8 +64,7 @@ module Homebrew
     end
   end
 
-  def print_cask_cache(name)
-    cask = Cask::CaskLoader.load name
-    puts Cask::Cmd::Cache.cached_location(cask)
+  def print_cask_cache(cask)
+    puts Cask::Download.new(cask).downloader.cached_location
   end
 end
diff --git a/Library/Homebrew/cmd/home.rb b/Library/Homebrew/cmd/home.rb
index 8b37d3810c16fc34863d3c5341334b87edca5385..318c7ffb02197220e30a65af2d2578b7388fafd7 100644
--- a/Library/Homebrew/cmd/home.rb
+++ b/Library/Homebrew/cmd/home.rb
@@ -1,8 +1,6 @@
 # frozen_string_literal: true
 
 require "cli/parser"
-require "cask/cask_loader"
-require "cask/exceptions"
 
 module Homebrew
   module_function
@@ -23,21 +21,22 @@ module Homebrew
 
     if args.no_named?
       exec_browser HOMEBREW_WWW
+      return
+    end
+
+    homepages = args.formulae_and_casks.map do |formula_or_cask|
+      puts "Opening homepage for #{name_of(formula_or_cask)}"
+      formula_or_cask.homepage
+    end
+
+    exec_browser(*homepages)
+  end
+
+  def name_of(formula_or_cask)
+    if formula_or_cask.is_a? Formula
+      "Formula #{formula_or_cask.name}"
     else
-      homepages = args.named.map do |name|
-        f = Formulary.factory(name)
-        puts "Opening homepage for formula #{name}"
-        f.homepage
-      rescue FormulaUnavailableError
-        begin
-          c = Cask::CaskLoader.load(name)
-          puts "Opening homepage for cask #{name}"
-          c.homepage
-        rescue Cask::CaskUnavailableError
-          odie "No available formula or cask with the name \"#{name}\""
-        end
-      end
-      exec_browser(*homepages)
+      "Cask #{formula_or_cask.token}"
     end
   end
 end