welp, use an lru cache becasue everything else sucks