add virtual onDeserialize function