data classes implement serialiablze