cache should be optional