     end)
   end
 
+  @spec do_prefixes(String.t) :: MapSet.t
   defp do_prefixes(word) do
     for i <- 1..byte_size(word) - 1, into: %MapSet{} do
       <<prefix::binary-size(i), _::binary>> = word
       prefix
     end
   end
+
+  @spec default_list :: MapSet.t
+  defp default_list do
+    Application.app_dir(:lexibomb_server, "priv/word.list")
+    |> File.stream!
+    |> Stream.map(&String.rstrip/1)
+    |> MapSet.new
+  end
+
+  @spec normalize(String.t) :: String.t
+  defp normalize(word) do
+    String.upcase(word)
+  end
 end

  """
  @spec member?(String.t) :: boolean
  def member?(word) do
    Agent.get(__MODULE__, fn word_list ->
      normalize(word) in word_list
    end)
  end

  @doc """
  The set of all prefixes of each word in a given `word_list`.

  ## Examples


  """
  @spec start_link(MapSet.t) :: Agent.on_start
  def start_link(word_list \\ default_list) do
    words = Enum.map(word_list, &normalize/1)
    prefixes = prefixes(words)

    Agent.start_link(fn -> {words, prefixes} end, name: __MODULE__)
  end

  @doc """
