   end
 
   defp reenable_tasks(config) do
-    Mix.Task.reenable("app.start")
     Mix.Task.reenable("compile")
     Mix.Task.reenable("compile.all")
+    Mix.Task.reenable("compile.protocols")
     compilers = config[:compilers] || Mix.compilers
     Enum.each compilers, &Mix.Task.reenable("compile.#{&1}")
-  end
-
-  defp stop_apps(config) do
-    apps =
-      cond do
-        Mix.Project.umbrella?(config) ->
-          for %Mix.Dep{app: app} <- Mix.Dep.Umbrella.loaded, do: app
-        app = config[:app] ->
-          [app]
-        true ->
-          []
-      end
-    stopped? =
-      Enum.reverse(apps)
-      |> Enum.all?(&match?({:error, {:not_started, &1}}, Application.stop(&1)))
-      |> Kernel.not
-    {stopped?, apps}
   end
 
   @doc """

    * `pid/1`         - creates a PID from a string
    * `pid/3`         - creates a PID with the 3 integer arguments passed
    * `pwd/0`         - prints the current working directory
    * `r/1`           - recompiles and reloads the given module's source file
    * `respawn/0`     - respawns the current shell
    * `s/1`           - prints spec information
    * `t/1`           - prints type information

    if mix_started? do
      config = Mix.Project.config
      reenable_tasks(config)
      Mix.Task.run("compile")
    else
      IO.puts IEx.color(:eval_error, "Mix is not running. Please start IEx with: iex -S mix")
      :error
