Andrew Wooster (andrew@planetaryscale.com)

Ported to Python 3 by Kevin Kelley (kelleyk@kelleyk.net)
