https://doi.org/10.1016/0014-4800(88)90017-2