Free Product of Groups I need help with understanding the proof of the following Lemma(68.1, page 414) in Munkres' Topology, 2nd edition.  I will be grateful if someone could take me through the proof or provide a different proof to what's found in the book.

Let $G$ be a group; Let $\{G_\alpha\}$ be a family of subgroups of $G$. If $G$ is the free product of the groups $G_\alpha$, then $G$ satisfies the following condition: 

Given any group $H$ and any family of homomorphisms $h_\alpha : G_\alpha \to H$, there exists a homomorphism $h:G\to H$ whose restriction to $G_\alpha$ equals $h_\alpha$, for each $\alpha$. Furthermore, $h$ is unique.  

Thanks.
 A: The free product of the $G_{\alpha}$ consists of all words of the form
$$\mathbf{g}=g_{1\alpha_1}g_{2\alpha_2}\cdots g_{m\alpha_m}$$
where $g_{i\alpha_i}\in G_{\alpha_i}$, $\alpha_i\neq\alpha_{i+1}$ for $i=1,\ldots$. Multiplication is by concatenation if the last index of $\mathbf{g}$ is different from the first index of $\mathbf{h}$; if they are equal, then we multiply $g_{m\alpha_m}$ by $h_{1\alpha_1}$, reduce as necessary, and continue.
The hardest part in proving that this is a group is proving associativity of the operation; trying to do it directly results in having to consider several different cases depending on how much cancellation there is. 
Luckily, there is a better way of proving that the product is associative, known as "van der Waerden's trick." We embed this set into something that we already know is a group, and show that the product we have defined agrees with the operation on the known group.
Let $\mathbf{x}$ be a symbol that is not an element of any $G_{\alpha}$, and let $X$ consist of all words of the form
$$g_{1\alpha_1}g_{2\alpha_2}\cdots g_{m\alpha_m}\mathbf{x},$$
with $g_{1\alpha_1}\cdots g_{m\alpha_m}$ as above. Let $S_X$ be the group of all permutations of $X$. 
Let $G$ be the free product of the $G_{\alpha}$ with multiplication described as above. Given $\alpha$ and $h\in G_{\alpha}$, we define $\sigma_{h,\alpha}$ to be the element of $S_X$ given by
$$\sigma_{h,\alpha}(\mathbf{g}\mathbf{x}) = \left\{\begin{array}{ll}
hg_{1\alpha_1}\cdots g_{m\alpha_m}\mathbf{x} &\text{if }\alpha\neq\alpha_1\text{ or }(\alpha=\alpha_1\text{ and }h\neq g_{1\alpha_1}^{-1})\\
g_{2\alpha_2}\cdots g_{m\alpha_{m}}\mathbf{x} &\text{if }\alpha=\alpha_1\text{ and }h=g_{1\alpha_1}^{-1}\\
h\mathbf{x} & \text{if }m=0.
\end{array}\right.$$
Given $\mathbf{h}=h_{1\beta_1}\cdots h_{m\beta_m}\in G$, we define $$\sigma_{\mathbf{h}} = \sigma_{h_{1\beta_1},\beta_1}\circ\cdots\circ \sigma_{h_{m\beta_m},\beta_m}.$$
(The role of $\mathbf{x}$ is as "punctuation", to ensure that there is actually an object in $X$ to which we are mapping when there is "full cancellation").
Note that the map $\mathbf{g}\mapsto\sigma_{\mathbf{g}}$ is one-to-one, since $\sigma_{\mathbf{g}} = \sigma_{\mathbf{h}}$ implies $\mathbf{g}=\sigma_{\mathbf{g}}(\mathbf{x})=\sigma_{\mathbf{h}}(\mathbf{x}) = \mathbf{h}$. 
It is now easy to verify that the multiplication in $G$ satisfies $\sigma_{\mathbf{gh}} = \sigma_{\mathbf{g}}\circ\sigma_{\mathbf{h}}$; so the multiplication we have defined on $G$ is associative, since it corresponds to composition in $S_X$ and we know $S_X$ is a group. Thus, this product makes $G$ into a group.
Moreover, there is a natural embedding of each $G_{\alpha}$ into $G$, mapping $g\in G_{\alpha}$ to the word that consists only of $g$. Call this $\iota_{\alpha}\colon G_{\alpha}\to G$. 
So, taking for granted that this is a group, we prove that it has the desired universal property: let $H$ be an arbitrary group, and let $h_{\alpha}\colon G_{\alpha}\to H$ be group homomorphisms from each $G_{\alpha}$. We need to show that there exists a unique homomorphism $h\colon G\to H$ such that $h_{\alpha} = h\circ \iota_{\alpha}$ for every $\alpha$.
Existence. Given $\mathbf{g}=g_{1\alpha_1}\cdots g_{m\alpha_m}\in G$ as above, we define
$$h(\mathbf{g}) = h_{\alpha_1}(g_{1\alpha_1})\cdots h_{\alpha_m}(g_m\alpha_m).$$
This makes sense, because $g_{i\alpha_i} \in G_{\alpha_i}$ for each $i$, hence $h_{\alpha_i}(g_{i\alpha_i})$ is defined and an element of $H$; and thus the right hand side is a product of finitely many elements of $H$, hence an element of $H$.
We need to show that $h\circ\iota_{\alpha}=h_{\alpha}$ and that $h$ is a group homomorphism. The first is easy: if $g_{\alpha}\in G_{\alpha}$, then $h\circ\iota_{\alpha}(g_{\alpha}) = h(g_{\alpha}) = h_{\alpha}(g_{\alpha})$; thus, $h\circ\iota_{\alpha}$ agrees with $h_{\alpha}$ at every $g_{\alpha}\in G_{\alpha}$, hence the two are equal.
For the second, we need to show that $h$ is multiplicative. By induction, it suffices to look at products $g_{1\alpha_1}g_{2\alpha_2}$. If $\alpha_1=\alpha_2$, then we have
$$h(g_{1\alpha_1}g_{2\alpha_1}) = h_{\alpha_1}(g_{1\alpha_1}g_{2\alpha_1}) = h_{\alpha_1}(g_{1\alpha_1})h_{\alpha_1}(g_{2\alpha_1}) = h(g_{1\alpha_1})h(g_{2\alpha_1}),$$
since $h_{\alpha_1}$ is assumed to be a group homomorphism. If $\alpha_1\neq\alpha_2$, then
$$h(g_{1\alpha_1}g_{2\alpha_2}) = h_{\alpha_1}(g_{1\alpha_1})h_{\alpha_2}(g_{2\alpha_2}) = h(g_{1\alpha_1})h(g_{2\alpha_2}).$$
From this, one can easily show by induction on the number of letters in the product that $h$ is multiplicative. Thus, a homomorphism exists.
To prove uniqueness, suppose that $k\colon G\to H$ is a homomorphism such that $k\circ\iota_{\alpha} = h_{\alpha}$ for every $\alpha$. We need to show that $k=h$.
Since $G$ is generated by the words $g_{\alpha} = \iota_{\alpha}(g_{\alpha})$, it suffices to show that $k$ and $h$ agree on those elements. But this is now immediate: we have:
$$k(g_{\alpha}) = k(\iota_{\alpha}(g_{\alpha})) = h_{\alpha}(g_{\alpha}) = h(g_{\alpha}).$$
Since $k$ and $h$ are both group homomorphisms and they agree on a generating set for $G$< then $k=h$. Thus, the map is unique.
