implemented json_serializeable