adding cache for basic operations