diff --git a/Telegram/SourceFiles/intro/introwidget.cpp b/Telegram/SourceFiles/intro/introwidget.cpp
index 0de491d74e..18f50e6a4d 100644
--- a/Telegram/SourceFiles/intro/introwidget.cpp
+++ b/Telegram/SourceFiles/intro/introwidget.cpp
@@ -98,6 +98,8 @@ Widget::Widget(QWidget *parent) : TWidget(parent)
 }
 
 void Widget::refreshLang() {
+	_changeLanguage.destroy();
+	createLanguageLink();
 	InvokeQueued(this, [this] { updateControlsGeometry(); });
 }
 
@@ -118,7 +120,9 @@ void Widget::createLanguageLink() {
 	auto currentId = Lang::Current().id();
 	auto defaultId = Lang::DefaultLanguageId();
 	auto suggestedId = Lang::CurrentCloudManager().suggestedLanguage();
-	if (!suggestedId.isEmpty() && suggestedId != currentId) {
+	if (!currentId.isEmpty() && currentId != defaultId) {
+		createLink(Lang::GetOriginalValue(lng_switch_to_this), defaultId);
+	} else if (!suggestedId.isEmpty() && suggestedId != currentId) {
 		request(MTPlangpack_GetStrings(MTP_string(suggestedId), MTP_vector<MTPstring>(1, MTP_string("lng_switch_to_this")))).done([this, suggestedId, createLink](const MTPVector<MTPLangPackString> &result) {
 			auto strings = Lang::Instance::ParseStrings(result);
 			auto it = strings.find(lng_switch_to_this);
@@ -126,8 +130,6 @@ void Widget::createLanguageLink() {
 				createLink(it->second, suggestedId);
 			}
 		}).send();
-	} else if (!currentId.isEmpty() && currentId != defaultId) {
-		createLink(Lang::GetOriginalValue(lng_switch_to_this), defaultId);
 	}
 }
 
diff --git a/Telegram/SourceFiles/lang/lang_cloud_manager.cpp b/Telegram/SourceFiles/lang/lang_cloud_manager.cpp
index 8410ba5bfc..72782ed88f 100644
--- a/Telegram/SourceFiles/lang/lang_cloud_manager.cpp
+++ b/Telegram/SourceFiles/lang/lang_cloud_manager.cpp
@@ -30,7 +30,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
 
 namespace Lang {
 
-CloudManager::CloudManager(Instance &langpack, gsl::not_null<MTP::Instance*> mtproto) : MTP::Sender(mtproto)
+CloudManager::CloudManager(Instance &langpack, gsl::not_null<MTP::Instance*> mtproto) : MTP::Sender()
 , _langpack(langpack) {
 	requestLangPackDifference();
 }
diff --git a/Telegram/SourceFiles/lang/lang_keys.cpp b/Telegram/SourceFiles/lang/lang_keys.cpp
index 7e73d65107..33d5001085 100644
--- a/Telegram/SourceFiles/lang/lang_keys.cpp
+++ b/Telegram/SourceFiles/lang/lang_keys.cpp
@@ -38,7 +38,7 @@ QString langNewVersionText() {
 
 bool langFirstNameGoesSecond() {
 	auto fullname = lang(lng_full_name__tagged);
-	for (auto begin = fullname.constData(), ch = begin, end = ch + fullname.size(); ch != end;) {
+	for (auto begin = fullname.constData(), ch = begin, end = ch + fullname.size(); ch != end; ++ch) {
 		if (*ch == TextCommand) {
 			if (ch + 3 < end && (ch + 1)->unicode() == TextCommandLangTag && *(ch + 3) == TextCommand) {
 				if ((ch + 2)->unicode() == 0x0020 + lt_last_name) {
diff --git a/Telegram/SourceFiles/mtproto/mtp_instance.cpp b/Telegram/SourceFiles/mtproto/mtp_instance.cpp
index 95fa8ad9ba..5f7e95f55e 100644
--- a/Telegram/SourceFiles/mtproto/mtp_instance.cpp
+++ b/Telegram/SourceFiles/mtproto/mtp_instance.cpp
@@ -186,7 +186,7 @@ private:
 
 };
 
-Instance::Private::Private(Instance *instance, DcOptions *options, Instance::Mode mode) : Sender(instance), _instance(instance)
+Instance::Private::Private(Instance *instance, DcOptions *options, Instance::Mode mode) : Sender(), _instance(instance)
 , _dcOptions(options)
 , _mode(mode) {
 }
diff --git a/Telegram/SourceFiles/mtproto/sender.h b/Telegram/SourceFiles/mtproto/sender.h
index 14f9e0f452..0334cabea4 100644
--- a/Telegram/SourceFiles/mtproto/sender.h
+++ b/Telegram/SourceFiles/mtproto/sender.h
@@ -186,9 +186,6 @@ class Sender {
 		gsl::not_null<Sender*> sender() const noexcept {
 			return _sender;
 		}
-		gsl::not_null<Instance*> instance() const noexcept {
-			return _sender->_instance;
-		}
 		void registerRequest(mtpRequestId requestId) {
 			_sender->requestRegister(requestId);
 		}
@@ -205,7 +202,7 @@ class Sender {
 	};
 
 public:
-	Sender(gsl::not_null<Instance*> instance = MainInstance()) noexcept : _instance(instance) {
+	Sender() noexcept {
 	}
 
 	template <typename Request>
@@ -255,7 +252,7 @@ public:
 		}
 
 		mtpRequestId send() {
-			auto id = instance()->send(_request, takeOnDone(), takeOnFail(), takeDcId(), takeCanWait(), takeAfter());
+			auto id = MainInstance()->send(_request, takeOnDone(), takeOnFail(), takeDcId(), takeCanWait(), takeAfter());
 			registerRequest(id);
 			return id;
 		}
@@ -288,7 +285,7 @@ public:
 	SentRequestWrap request(mtpRequestId requestId) noexcept WARN_UNUSED_RESULT;
 
 	void requestSendDelayed() {
-		_instance->sendAnything();
+		MainInstance()->sendAnything();
 	}
 	void requestCancellingDiscard() {
 		for (auto &request : _requests) {
@@ -296,30 +293,28 @@ public:
 		}
 	}
 	gsl::not_null<Instance*> requestMTP() const {
-		return _instance;
+		return MainInstance();
 	}
 
 private:
 	class RequestWrap {
 	public:
-		RequestWrap(Instance *instance, mtpRequestId requestId) noexcept : _instance(instance), _id(requestId) {
+		RequestWrap(Instance *instance, mtpRequestId requestId) noexcept : _id(requestId) {
 		}
 
 		mtpRequestId id() const noexcept {
 			return _id;
 		}
 		void handled() const noexcept {
-			_instance = nullptr;
 		}
 
 		~RequestWrap() {
-			if (_instance) {
-				_instance->cancel(_id);
+			if (auto instance = MainInstance()) {
+				instance->cancel(_id);
 			}
 		}
 
 	private:
-		mutable Instance *_instance = nullptr;
 		mtpRequestId _id = 0;
 
 	};
@@ -353,7 +348,7 @@ private:
 	friend class SentRequestWrap;
 
 	void requestRegister(mtpRequestId requestId) {
-		_requests.emplace(_instance, requestId);
+		_requests.emplace(MainInstance(), requestId);
 	}
 	void requestHandled(mtpRequestId requestId) {
 		auto it = _requests.find(requestId);
@@ -369,7 +364,6 @@ private:
 		}
 	}
 
-	gsl::not_null<Instance*> _instance;
 	std::set<RequestWrap, RequestWrapComparator> _requests; // Better to use flatmap.
 
 };