replace with rapidjson
refine IO
last