move some logic highlighted to a cachable property