Merge initial swift work from neillc's fork.

Nope. We should maybe one day, but it's premature complexification right now.