An updated version of this post is available.