  An $(n,d,\lambda)$-graph is a $d$ regular graph on $n$ vertices in which the
absolute value of any nontrivial eigenvalue is at most $\lambda$. For any
constant $d \geq 3$, $\epsilon>0$ and all sufficiently large $n$ we show that
there is a deterministic poly(n) time algorithm that outputs an $(n,d,
\lambda)$-graph (on exactly $n$ vertices) with $\lambda \leq 2
\sqrt{d-1}+\epsilon$. For any $d=p+2$ with $p \equiv 1 \bmod 4$ prime and all
sufficiently large $n$, we describe a strongly explicit construction of an
$(n,d, \lambda)$-graph (on exactly $n$ vertices) with $\lambda \leq \sqrt
{2(d-1)} + \sqrt{d-2} +o(1) (< (1+\sqrt 2) \sqrt {d-1}+o(1))$, with the $o(1)$
term tending to $0$ as $n$ tends to infinity. For every $\epsilon >0$,
$d>d_0(\epsilon)$ and $n>n_0(d,\epsilon)$ we present a strongly explicit
construction of an $(m,d,\lambda)$-graph with $\lambda < (2+\epsilon) \sqrt d$
and $m=n+o(n)$. All constructions are obtained by starting with known ones of
Ramanujan or nearly Ramanujan graphs, modifying or packing them in an
appropriate way. The spectral analysis relies on the delocalization of
eigenvectors of regular graphs in cycle-free neighborhoods.
