 
   """
   @spec has_key?(t, key) :: boolean
-  def has_key?(keywords, key) when is_atom(key) do
+  def has_key?(keywords, key) when is_list(keywords) and is_atom(key) do
     :lists.keymember(key, 1, keywords)
   end
 


  """
  @spec delete_first(t, key) :: t
  def delete_first(keywords, key) when is_atom(key) do
    :lists.keydelete(key, 1, keywords)
  end



  """
  @spec get_values(t, key) :: [value]
  def get_values(keywords, key) when is_list(keywords) and is_atom(key) do
    for { k, v } <- keywords, key == k, do: v
  end

