Refactoring to unify the two syntax types. Lots left to do here. Build broken (obv).