still do recursive serialization