In SPL all process steps have the same element name "processStep" and what the step does is coded in the code sub-element. We can just use the XDL step names as processStep/codes. But our processStep/code also allows us to refer to other, wider, and especially more refined terminology of process steps (possibly aligned with domain specific ontologies developed by other groups). XDL then has a set of parameters defined specifically for each step. For example the parameters "volume" and "amount" and "time" is defined for most steps. The "flow_rate" is only defined for Purge. "vessel" is defined for most steps and "from_vessel" and "to_vessel" defined for the Transfer step. Some parameters are Boolean (true/false) values, such as "viscous" for Add and Transfer, or "active" for HeatChill (to say if the temperature change should be effected by active heating or chilling or just by waiting for room temperature. These slight variances of meaning we address by specialized codes, instead of these parameters we say "Transfer-Viscous" or "HeatChill-Active" (and possibly even separate the step codes "HeatChill" into "Heat" vs. "Chill".) Some parameters have small value sets of strings, such as "Separate" has "product_phase" with "top" vs. "bottom". All such small differences can be encoded in the R-SPL processStep/ code. We also note that XDL steps can be analyzed further to find that there are certain overlaps of meaning. For example: Add vs. Transfer, really have the same meaning: Add just Transfers a substance from a source vessel to a reactor, while Transfer might move an intermediary product out of one reaction vessel to some other reaction vessel. Ultimately, it is all the Transferring from one vessel to another. We could therefore just use the same code for it, or we define Add as a specialization of Transfer.