std::serialize implemented