build up the cache if it is not already there on request.
include check for size limit on GetFOI. if exceeds, throw exception.