File producer that reads and returns file when run.
Implementation of production
User facing produce method. Caching wrapper.
Should we cache results?