doesn't break on unicode