added serialization, but this shouldn't be super necessary