move bucket caching logic up to the decorator