Language rewrite

I think this is good to go too, or nearly.