Why abs? Can it be negative? Also, can't you call `length` directly instead of `do_length` with a grapheme?