converted the main class to a singleton pattern

Conversion to singleton pattern was done with thread safety in mind. It will facilitate typed parameter caching in a future build.