add marshal serialization