Rebasing earlier work. This is a fresh start.