new structure

(squashed last 5 commits into this one to preserve history across
the renames)