The Machinist program extends domain dependent planning technology. It is modeled after the behavior of human machinists, and makes plans for fabricating metal parts using machine tools. Many existing plannmg programs rely on a problem solving strategy that involves fixing problems in plans only after they occur. The result is that planning time may be wasted when a bad plan is unnecessarily generated and must be thrown out or modified. The machinist program improves on these methods by looking for cues in the problem specification that may indicate potential difficulties or conflicting goal interactions, before generating any plans. It plans around those difficulties, greatly increasing the probability of producing a good plan on the first try. Planning efficiency is greatly increased when false starts can be eliminated. The machinist program contains about I80 UPS5 rules, and has been judged by experienced machinists to make plans that, are on the average, better than those of a 5 year journeyman. The knowledge that makes the technique eflective is domain dependent, but the technique itself can be used in other domains.