You should avoid casting back and forth between concrete Order classes such as OrderGroup and OrderForm, and abstraction interfaces such as IOrderGroup and IOrderForm. For example, it is recommended to use only one API from the time you load a cart or purchase order until you save it. While this is not always possible, doing it whenever possible helps avoid hidden problems when casting.
## Order objects
The object model for the Optimizely Commerce order system is below.  For more information, see [Order manipulation](🔗).
### Commerce 13

### Commerce 12

### Commerce 10 and 11

## Order manipulation
The diagram below represents how to create, edit, and delete orders. For more information, see [Order manipulation](🔗).

## Order processing
The diagram below represents how to process different actions for orders. For more information, see [Order processing](🔗).

## Order calculations
The diagram below represents how to work with calculating totals for orders. See [Calculating orders](🔗).
