use caching and minor doco update