I think we could use `size()` and `:binary.part/2` instead of length and slice so we work at the byte level and don't waste resources at the utf-8 level. What do you think?