add click support; add caching