This should be a top-level interface if it's gonna be polymorphically deserialized.