let's not re-compute everything if we don't need to