       @spec context() :: atom
       def context, do: @__context__
 
+      @spec title() :: String.t
+      def title, do: name() |> Talon.Utils.titleize
+
+      # TODO: perhaps resource_name, module_name
+      @spec name() :: String.t
+      def name, do: __MODULE__ |> Module.split |> List.last() |> to_string |> Inflex.underscore
+
       defoverridable [
-        context: 0, resource_paths: 1, page_paths: 1, index_card_title: 0
+        context: 0, resource_paths: 1, page_paths: 1, index_card_title: 0, title: 0, name: 0
       ]
     end
   end

      Note: This function is overridable
      """
      @spec page_paths(Map.t) :: [Tuple.t]
      def page_paths(%{talon: talon} = _talon) do
        talon.page_names()
        |> Enum.map(&{Talon.Utils.titleize(&1),  "/talon/pages/#{&1}"})
      end

      @doc """

      def resource_paths(%{talon: talon} = _talon) do
        talon.resources()
        |> Enum.map(fn talon_resource ->
          schema = talon_resource.schema()
          # TODO: let resource determine presentation name (DJS)
          {Talon.Utils.titleize(schema) |> Inflex.Pluralize.pluralize, Talon.Utils.talon_resource_path(schema, :index)}
        end)
      end
