94dbfb3a82
Also includes a fix for MDL-24749 by Sam Hemelryk. Thanks Sam. This commit also includes a certain amount of code cleaning up.