Source: https://crystal.uta.edu/~cli/cse5334/slides/cse5334-fall18-04-preprocess.pdf