Update with Bill's rewrite