Source: http://www.karlin.mff.cuni.cz/~hron/NMNV532/ShellIntro.pdf