Won't it cache @all_roles?

I do think we need a branch specifically to work on cache and performance metrics.  I know you didn't get what I was doing on id_cache, but there are some ideas worth exploring there.  I think we want to write our own Marshal dump/load methods