For documentation and discussion, see the talk page.