The field of computer science uses the term Engine to provide a mental model of software components an order of magnitude more complex than ordinary modules of software (such as the libraries, SDKs or objects mentioned above). Software modules remain static until called upon by another module. In response to the call, the instruction pointer of the computer begins tracing its way through the code in the called upon module. A software module is a Turing machine, which changes its state based on the algorithms that it contains.