Better language support.

Sorry the merge/commit are out of order, they're non-conflicting :)