Bijection between left exact localizations of $PSh(C)$ and Grothendieck topologies on $C$ Let $C$ be a small category. I like to understand, why there is a bijective correspondence between


*

*Left exact localizations of $PSh(C)$, i.e. reflective subcategories
$$
a\colon PSh(C)\leftrightarrows D:i
$$
such that a commutes with finite limits


and


*Grothendieck topologies on $C$.


Of course, if $C$ is equipped with a Grothendieck topology, then one associates the category $D=Sh(C)$ with the sheafification $a$ and the inclusion $i$. This is an object of (1.) and hence defines a map "(2.)-->(1.)".
My question is:

How can I construct an inverse "(1)-->(2)" to this map?

I know that (1.) can be used as a definition of a (Grothendieck) topos $D$ and by blind citation I know that every such topos is equivalent to the category of sheaves on some site $C'$. But I don't know why one may choose $C'=C$ and cannot see the structure of a proof either. Thank you.
 A: Given a reflective subcategory of $\mathbf{Psh} (\mathcal{C})$, define a sieve $\mathfrak{U}$ on an object $X$ in $\mathcal{C}$ to be a covering sieve iff the reflector $a : \mathbf{Psh} (\mathcal{C}) \to \mathcal{D}$ sends the inclusion $\mathfrak{U} \hookrightarrow h_X$ in $\mathbf{Psh} (\mathcal{C})$ to an isomorphism in $\mathcal{D}$.

If $a : \mathbf{Psh} (\mathcal{C}) \to \mathcal{D}$ preserves finite limits, then:
  
  
*
  
*The above defines a Grothendieck topology on $\mathcal{C}$.
  
*Every object in $\mathcal{D}$ is a sheaf with respect to this Grothendieck topology.
  
*Every sheaf is isomorphic to an object in $\mathcal{D}$.
  

The first two claims are easy. The third one requires actual work. One way is to note that reflective subcategories are determined by the morphisms that the reflector sends to isomorphisms. Since $\mathcal{D}$ is a topos and $a : \mathbf{Psh} (\mathcal{C}) \to \mathcal{D}$ preserves finite limits, it suffices to understand which morphisms $a : \mathbf{Psh} (\mathcal{C}) \to \mathcal{D}$ sends to epimorphisms. For this, you can use the exactness properties of toposes. If you need further information, look up universal closure operators.
