Implement multiple category selection and add deep serialization