     child(:supervisor, module, args, options)
   end
 
+  # TODO: Do and expose proper child validation
+  # TODO: Convert into map childspecs by v2.0
   defp child(type, module, args, options) do
     id       = Keyword.get(options, :id, module)
     modules  = Keyword.get(options, :modules, modules(module))

  @spec supervise([spec], strategy: strategy,
                          max_restarts: non_neg_integer,
                          max_seconds: non_neg_integer) :: {:ok, tuple}
  def supervise(children, options) do
    unless strategy = options[:strategy] do
      raise ArgumentError, "expected :strategy option to be given"

      restart, shutdown, type, modules}
  end

  # TODO: Remove GenEvent when there is no more GenEvent v2.0
  defp modules(GenEvent), do: :dynamic
  defp modules(module),   do: [module]
end
