Starting another major rewrite