Source: https://ocean.stanford.edu/courses/bomc/chem/lecture_02.pdf