[feat] more flexible unserialize