serialization implement