generated helpers can be cached