Commit 30. (Beta Candidate)
This provides a fix for #89, #116, #148 and #149.
It is also a candidate for Beta. If no significant new bugs are
encountered then it will be used to provide an official beta version.