We'll go with both status and generation but I've commented the status caching members from the base class since they weren't used. Some work towards ::setToGradient() but it is incomplete.