How to make a NFA (or DFA) from $\varepsilon$NFA?
I think the following should work. For each state q, define E(q) to be the set of all states reachable from q by following zero or more &epsilon;-transitions. Then, create a new NFA as follows:


The set of states in the NFA is the set $\{ E(q) | q \in Q \}$.
The start state is $E(q_0)$.
For each state $E(q)$ in the new NFA, the transitions are given as follows: for each state $r \in E(q)$ that has a transition to a state $s$ on a character $a$, add a transition from $E(q)$ to $E(s)$ on $a$.
The accepting states in the NFA are the states containing at least one accepting state in the original NFA.


The basic idea behind the construction is to have each NFA state correspond to a set of states in the &epsilon;-NFA. This effectively simulates taking all possible &epsilon;-transitions at each point in time.