Re-factored to a class.
Added in-process caching
Added documentation
Changed to support options based configutation (with suppotr for old method of init)