Added Caching and Additional Functionality

I've updated the class to utilize a caching system to ensure that it doesn't use more requests than needed  in addition to added functionality throughout the class. Also updated the commenting throughout the code.