Initial version, revision pending.