only accept unicode strings as input