don't bother caching, makes little performance difference