(with units of Å for bond stretch coordinates and radians for angle coordinates). This parameter may be changed by using the keyword argument delta0. Increasing the trust region size will result in larger step sizes, though at the cost of increasing the likelihood of a poor step. Sella is also capable of performing minimization or optimization to higher-order saddle points. The desired saddle point order may be specified with the order keyword argument. This defaults to 1, corresponding to optimization to a first order saddle point. Minimization can be requrested by setting order to 0. Additional keyword arguments are outlined in the Sella manual, available on github. Listing 2 contains a more complex example Python script that uses Sella to optimize a molecule to a saddle point. First, this example uses the i-PI socket protocol to communicate with the NWChem executable. This speeds up the overall calculation time by reusing the same NWChem processes for all energy and gradient calculations, rather than starting a new instance of NWChem for each single point. Other electronic structure theory codes that support the i-PI socket protocol include Quantum Espresso, Siesta, Abinit, and FHI-aims. Additionally, this example uses the irun iterator for running the optimization, rather than the run function. The use of irun makes it possible to run custom user-specified code at every iteration of the optimization trajectory. This enables users to perform more sophisticated logging, monitor the structure as it is optimizing, or implement their own custom convergence criteria.