D'oh, don't use unicode().
Reduce repetition.
Fix cache_result to actual work.