needs  serialVersionUID since it's serialized