add serialize function