This is adding quite a few instance variables to the GemInfo class, which is somewhat concerning. Moreover, this is supposed to be just a value object. I would move the actual retrieval into the GemInfoRetriever's retrieve method, and then pass in only the values you're actually using in the template into the constructor of GemInfo.