made the GetLanguageGateway functions virtual to allow overriding