* Refractored a bit.