Automating the mechanical design process by best-first heuristic search