#44 prepared for utf8
#45 implemented, #43 implemented