How to create different sets of fields per listing's category

We have 10 categories in our listings, the fields must be different for each category. How is this possible?