Why is it worth returning the same object here, as opposed to just doing `string(string.value)` everywhere?