   """
 
   @type address :: String.t | {String.t, String.t}
+  @type address_list :: nil | address | [address] | any
 
   @type t :: %__MODULE__{
-    to: nil | any,
-    cc: nil | any,
-    bcc: nil | any,
+    to: address_list,
+    cc: address_list,
+    bcc: address_list,
     subject: nil | String.t,
     html_body: nil | String.t,
     text_body: nil | String.t,

  @spec new_email(Enum.t) :: __MODULE__.t
  def new_email(attrs \\ []) do
    struct!(%__MODULE__{}, attrs)
  end

  for function_name <- @attribute_pipe_functions do


  alias Bamboo.Email

  @address_functions ~w(from to cc bcc)a
  @attribute_pipe_functions ~w(subject text_body html_body)a

  @doc """
  Used to create a new email
