Initial port of the new language service work.

Can we move these back to interfaces.