This class is awesome. I really like that it holds off the logic for the rest of the application to utilize. Is there an API that stores this data for you that you could use? If not, you absolutely did this the right way.