return undef if the split fails.
define error values, return run error if things fail.