Source: https://web.mit.edu/7.01x/7.014/documents/Redox.pdf