add unicode support
remove lifetime