improved API, improved cacheing