A CNC mill calculates speeds and feeds or SFM based on the information the user enters. The type of CNC mill, the type of machine controller, and the age of the machine will affect the amount of information that can be input directly into the machine. Historically G-code was created externally from a CNC machine and then loaded onto the machine. Externally created G-code was authored either with a dedicated CAM software or with a plug-in embedded in the 3D parametric modeling software. The user would input the same CNC machine they want to create the part on (with the specific work holding fixture), the type of tooling (manufacture, part number etc.), and the specific material being machined. The software generates the speeds and feeds based on the part's geometry and all the inputted information. This creates the optimal speeds and feeds or SFM tailored to the exact part and CNC machine.