Neatest proof that set of finite subsets is countable? I am looking for a beautiful way of showing the following basic result in elementary set theory:

If $A$ is a countable set then the set of finite subsets of $A$ is
  countable.

I proved it as follows but my proof is somewhat fugly so I was wondering if there is a neat way of showing it:
Let $|A| \le \aleph_0$. If $A$ is finite then $P(A)$ is finite and hence countable. If $|A| = \aleph_0$ then there is a bijection $A \to \omega$ so that we may assume that we are talking about finite subsets of $\omega$ from now on. Define a map $\varphi: [A]^{<\aleph_0} \to (0,1) \cap \mathbb Q$ as $B \mapsto \sum_{n \in \omega} \frac{\chi_B (n)}{2^n}$. Then $\varphi$ is injective hence the claim follows. (The proof of which is what is the core-fugly part of the proof and I omit it.). 

Let $A$ be enumerated by $(a_n)_{ \, n \ge 1}$. 
We'll enumerate all the finite subsets of $A$ by defining a recursive function $f$.
Define $f(1) = \emptyset$.
If $f$ has been defined on $\{n \in \Bbb N \mid 1 \le n \le 2^k \}$ for $k \ge 0$ and $2^k \lt m \le 2^{k+1}$, define
$\tag 1 \displaystyle f(m) = f(m - 2^k) \cup \{a_{k+1}\}$
See also this.
Note: It is possible to specify $f$ in the more standard 'step-by-step' recursion format:
$\quad \text{specify } f(n+1) \text{ by transforming } f(n)$
One can associate to each subset of $A$ (using the ${a_n}$ enumeration) a chain and can perform 'gap' analysis; depending on the 'gap structure' of $f(n)$ the specification for $f(n+1)$ can be given.

These are the $f(n)$ outputs from $n=1$ to $16$:
$\{\}$
$\{a_1\}$
$\{a_2\}$
$\{a_2,a_1\}$
$\{a_3\}$
$\{a_3,a_1\}$
$\{a_3,a_2\}$
$\{a_3,a_2,a_1\}$
$\{a_4\}$
$\{a_4,a_1\}$
$\{a_4,a_2\}$
$\{a_4,a_2,a_1\}$
$\{a_4,a_3\}$
$\{a_4,a_3,a_1\}$
$\{a_4,a_3,a_2\}$
$\{a_4,a_3,a_2,a_1\}$
