Rewrote almost the entire plugin.
Created a model/controller sort of architecture.
Added controls for caching.