Back in the late 1960s and early 1970s, many of IBM's mainframe APIs were public and cloned regularly. One of the first reasons was to perform Job Accounting, i.e., charge for the run of batch programs based on some combination of userid, account number, CPU time and clock time used, etc.
For instance, if a Job card was processed by an API in module jobctla.exe, we would rename that IBM module to jobctlx.exe, and write our own jobctla.exe. In our module, we would simply pass on the the API calls we didn't want to process in any way and for those we did want to process, we would do our own processing and then hand the call off to the renamed module. Rewriting APIs was an easy way to do pre-processing of commands.