Every connected topological manifold is topologically homogeneous

Let $M$ be a connected topological manifold. Prove that exists homeomorphism $h:M\rightarrow M$ such that $h(a)=b$.

I'm well aware that this question has been asked before. But no one has ever posted a complete answer, only some really general hints. Is the following proof all-right?

Attempt:

Given any $a,b\in M$, we must exhibit $h:M\rightarrow M$ homeomorphism such that $h(a)=b$. Define the following set: $H=\{x\in M$: exists $h:M\rightarrow M$ homeomorphism satisfying $h(x)=b\}$. Note that this set is non-empty, since $a\in H$ (by identity). We prove that this set is clopen. Take any $x_0\in H$ (and let $\varphi$ be the homeomorphism such that $\varphi(x_0)=b$). Since $M$ is topological manifold, there exists an open $V\ni x_0$ such that $\phi:V\rightarrow A\subset \mathbb{R}^n$ is homeomorphism, where $A$ is open. Let $B=B[\phi(x_0)]\subset\mathbb{R^n}$ be any closed ball. $\phi$ is homeomorphism, so $T = \phi^{-1}(B)$ is closed in $M$ containing $x_0$.

Define $\overline\phi : T \rightarrow B$ as $\overline \phi = \phi|_T$. Notice that $\beta = \overline \phi (x_0)\in \mbox{int}B$ and consider $\overline x \in T$ such that $\overline \phi(\overline x) \in \mbox{int}B.$ We find an homeomorphism $f:T\rightarrow T$ such that $f(x_0)=\overline x$. By a lemma, exists $g:B\rightarrow B$ homeomorphism such that $g$ is equal to the identity in $\partial B$ and such that $g(\beta)=\alpha$. Take $f = (\overline \phi)^{-1} \circ g \circ \overline \phi$. Hence $f$ is homeomorphism as a composition of homeomorphisms and such that it is identity in $\partial B$, and $f(x_0)=\overline x.$

Define $h:M \rightarrow M$ by $h(x) = f(x)$ if $x\in T$, and $h(x)=x$ otherwise. By another lemma we guarantee $h$ homeomorphism. Now we notice that $\varphi \circ h^{-1}$ is homeomorphism such that $\varphi(h^{-1}(\overline x))= b$. Therefore, $\overline x \in H$ and this proves that $H$ is open.

Now we prove that $H^C$ is open. Suppose not. Then exists $y_0$ such that for all $V$ neighborhood $V\ni y_0$ exists points of $H$. Let $U$ be the neighborhood such that it is homeomorphic to an open in $\mathbb{R^n}$. By the argument used before, we guarantee a closed set, which contains $y_0$ and is contained in $U$. We notice that this closed set must contain a point of $H$ in its interior. Again by another argument used before it follows that $y_0\in H$, a contradiction.

Therefore, $H$ is clopen. Since $M$ is connected and $H\neq \emptyset$, it follows that $H=M$.

I guess you showed ( or use) the fact that given two points $p$, $q$ in an open ball in $\mathbb{R}^n$, there exists a homeomoprphism of the ball that takes $p$ to $q$, and is the identity outside a compact subset of the ball. Using this, you show that for any two points in $M$ that lie in the domain of a chart homeomorphic to a ball, there exists a homeomorphism of the manifold that takes one to the other. Let now $p$, $q$ in $M$ arbitrary. Take $\gamma \colon [0,1]\to M$, $\gamma(0) = p$, $\gamma(1) = q$. Let $n$ large enough so that any $\gamma([\frac{i-1}{n}, \frac{i}{n}]$ lies inside the domain of a chart homeomorphic to a ball. Now, for every $i$, there exists a homeomorphism of $M$ taking $\gamma(\frac{i-1}{n})$ to $\gamma(\frac{i}{n})$. Now take the compostion.