separation of generic and language dependent bits