Brushless motor commutation can be implemented in software using a microcontroller or microprocessor computer, or may alternatively be implemented in analogue hardware, or in digital firmware using an FPGA. Commutation with electronics instead of brushes allows for greater flexibility and capabilities not available with brushed DC motors, including speed limiting, "micro stepped" operation for slow and/or fine motion control, and a holding torque when stationary.