Merge Nauphone's rewrite into branch to try