work on language middleware