separate splitting from dereferencing, which is useful in refList and fn