 
   """
   def run(args) do
-    config = Mix.Project.config
-    Mix.Task.run "compile", args
+    config = Mix.Project.config()
+    Mix.Task.run("compile", args)
     {opts, _, _} = OptionParser.parse(args, switches: [force: :boolean, verbose: :boolean])
 
-    output   = Mix.Project.consolidation_path(config)
+    output = Mix.Project.consolidation_path(config)
     manifest = Path.join(output, @manifest)
 
     protocols_and_impls = protocols_and_impls(config)

  end

  defp consolidation_paths do
    filter_otp(:code.get_path, :code.lib_dir)
  end

  defp filter_otp(paths, otp) do
    Enum.filter(paths, &(not :lists.prefix(&1, otp)))
  end

  defp consolidate([], _paths, output, manifest, metadata, _opts) do

  defp consolidate(protocol, paths, output, opts) do
    impls = Protocol.extract_impls(protocol, paths)
    reload(protocol)

    case Protocol.consolidate(protocol, impls) do
      {:ok, binary} ->
        File.write!(Path.join(output, "#{protocol}.beam"), binary)

        if opts[:verbose] do
          Mix.shell().info("Consolidated #{inspect(protocol)}")
        end

      # If we remove a dependency and we have implemented one of its
