language abstraction