         end
       end
 
-  Now we can explicitly convert our WeekDate:
+  Now we can explicitly convert our `WeekDate`:
 
       to_string WeekDate[year: 2013, week: 26, week_day: 4]
       "2013-W26-4"
 
-  A protocol can be implemented for any record, regardless if
+  A protocol can be implemented for any record, whether
   generated with `defrecordp` or `defrecord`.
   """
 
   @type t :: tuple
 
   @doc """
-  Extract record information from an Erlang file and
-  return the fields as a list of tuples.
+  Extract record information from an Erlang file. 
+  
+  Returns the fields as a list of tuples.
 
   ## Examples
+
+      > Record.extract(:file_info, from_lib: "kernel/include/file.hrl")
+      [size: :undefined, type: :undefined, access: :undefined, atime: :undefined,
+         mtime: :undefined, ctime: :undefined, mode: :undefined, links: :undefined,
+          major_device: :undefined, minor_device: :undefined, inode: :undefined,
+           uid: :undefined, gid: :undefined]
 
       defrecord FileInfo, Record.extract(:file_info, from_lib: "kernel/include/file.hrl")
 


  @doc """
  Defines the type for each field in the record.
  Expects a keyword list.
  """
  defmacro record_type(opts) when is_list(opts) do

defmodule Record do
  @moduledoc %S"""
  Functions for working with Records.

  A record is a tagged tuple which contains one or more elements
  where the first element is an atom. We can manually create a record
  by simply defining such a tuple:

      iex> record = { User, "José", 25 }
      iex> is_record(record, User)
      true

  However, manually constructing tuples can be quite error prone.
  If we need to add a new field to our User, it would require
  us to carefully change all places where the tuple is used.
  Furthermore, as more items are added to the tuple, they
  lose semantic value.

  This module solves these problems by allowing us to name each
