add serialize and requirements