These changes also involve overhauling the reduction semantics to have tuple-based expressions. See also: #32