its now spin(), computed on the fly instead of caching