Transactions have a `version` field (see [here](https://github.com/monero-project/monero/blob/6335509727661349e50c54c4e0eafd692f0d6907/src/cryptonote_basic/cryptonote_basic.h#L164) and [here](https://github.com/monero-project/monero/blob/6335509727661349e50c54c4e0eafd692f0d6907/src/cryptonote_config.h#L45), which is currently 2, RingCT). However RingCT *signatures* also specify a *type* in `rct_signatures.type`. RCTTypeSimple etc, are the *type* of RingCT signature used and are defined [here](https://github.com/monero-project/monero/blob/6335509727661349e50c54c4e0eafd692f0d6907/src/ringct/rctTypes.h#L229). Therefore it depends what you intend on changing (transaction / signatures), that would determine which field(s) you should change to ensure backwards compatibility. If you intend on doing away with RingCT altogether, you would of course change the transaction `version` field. If you intend on creating a new *type* of RingCT signature, you would create a new signature `type`.