Add D3 -- Don't merge yet

Creating this pull request to track development on this branch. It could use a lot of cleanup. I'll update when it's ready to merge.