some update
implement serialize