   """
   @spec member?(String.t) :: boolean
   def member?(word) do
-    Agent.get(__MODULE__, fn word_list ->
-      normalize(word) in word_list
+    Agent.get(__MODULE__, fn {words, _} ->
+      normalize(word) in words
     end)
   end
 
   @doc """
-  The set of all prefixes of each word in a given `word_list`.
+  Checks if the given `prefix` is a valid prefix in the word list.
+  """
+  @spec prefix?(String.t) :: boolean
+  def prefix?(prefix) do
+    Agent.get(__MODULE__, fn {_, prefixes} ->
+      normalize(prefix) in prefixes
+    end)
+  end
+
+  @doc """
+  Returns the set of all prefixes of each word in the given `word_list`.
 
   ## Examples
 

    end)
  end

  defp do_prefixes(word) do
    for i <- 1..byte_size(word) - 1, into: %MapSet{} do
      <<prefix::binary-size(i), _::binary>> = word
      prefix
    end
  end
end

  """
  @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 """
