Continued Language API work

Supercedes #2979.

@DennisKehrig I merged with master to resolve #2978