diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings
index 5b6ab61ac..c082ccbe9 100644
--- a/Telegram/Resources/langs/lang.strings
+++ b/Telegram/Resources/langs/lang.strings
@@ -601,6 +601,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 "lng_edit_privacy_calls_p2p_always_title" = "Always allow";
 "lng_edit_privacy_calls_p2p_never_title" = "Never allow";
 
+"lng_edit_privacy_calls_p2p_everyone" = "Everybody";
+"lng_edit_privacy_calls_p2p_contacts" = "My contacts";
+"lng_edit_privacy_calls_p2p_nobody" = "Nobody";
+
 "lng_self_destruct_title" = "Account self-destruction";
 "lng_self_destruct_description" = "If you don't come online at least once within this period, your account will be deleted along with all groups, messages and contacts.";
 "lng_self_destruct_months#one" = "{count} month";
diff --git a/Telegram/SourceFiles/boxes/edit_privacy_box.cpp b/Telegram/SourceFiles/boxes/edit_privacy_box.cpp
index ae51d2725..e5bad4c27 100644
--- a/Telegram/SourceFiles/boxes/edit_privacy_box.cpp
+++ b/Telegram/SourceFiles/boxes/edit_privacy_box.cpp
@@ -83,6 +83,15 @@ std::unique_ptr<PrivacyExceptionsBoxController::Row> PrivacyExceptionsBoxControl
 
 } // namespace
 
+LangKey EditPrivacyBox::Controller::optionLabelKey(Option option) {
+	switch (option) {
+	case Option::Everyone: return lng_edit_privacy_everyone;
+	case Option::Contacts: return lng_edit_privacy_contacts;
+	case Option::Nobody: return lng_edit_privacy_nobody;
+	}
+	Unexpected("Option value in optionsLabelKey.");
+}
+
 EditPrivacyBox::EditPrivacyBox(
 	QWidget*,
 	std::unique_ptr<Controller> controller,
@@ -182,29 +191,21 @@ bool EditPrivacyBox::showExceptionLink(Exception exception) const {
 	Unexpected("Invalid exception value.");
 }
 
-Ui::Radioenum<EditPrivacyBox::Option> *EditPrivacyBox::AddOption(
+Ui::Radioenum<EditPrivacyBox::Option> *EditPrivacyBox::addOption(
 		not_null<Ui::VerticalLayout*> container,
 		const std::shared_ptr<Ui::RadioenumGroup<Option>> &group,
 		Option option) {
-	const auto label = [&] {
-		switch (option) {
-		case Option::Everyone: return lng_edit_privacy_everyone;
-		case Option::Contacts: return lng_edit_privacy_contacts;
-		case Option::Nobody: return lng_edit_privacy_nobody;
-		}
-		Unexpected("Option value in EditPrivacyBox::AddOption.");
-	}();
 	return container->add(
 		object_ptr<Ui::Radioenum<Option>>(
 			container,
 			group,
 			option,
-			lang(label),
+			lang(_controller->optionLabelKey(option)),
 			st::settingsSendType),
 		st::settingsSendTypePadding);
 }
 
-Ui::FlatLabel *EditPrivacyBox::AddLabel(
+Ui::FlatLabel *EditPrivacyBox::addLabel(
 		not_null<Ui::VerticalLayout*> container,
 		rpl::producer<QString> text) {
 	const auto wrap = container->add(
@@ -244,9 +245,9 @@ void EditPrivacyBox::setupContent() {
 		toggle->fire({});
 	});
 
-	const auto addOption = [&](Option option) {
+	const auto addOptionRow = [&](Option option) {
 		return (_controller->hasOption(option) || (_value.option == option))
-			? AddOption(content, group, option)
+			? addOption(content, group, option)
 			: nullptr;
 	};
 	const auto addExceptionLink = [=](Exception exception) {
@@ -286,10 +287,10 @@ void EditPrivacyBox::setupContent() {
 	};
 
 	AddSubsectionTitle(content, _controller->optionsTitleKey());
-	addOption(Option::Everyone);
-	addOption(Option::Contacts);
-	addOption(Option::Nobody);
-	AddLabel(content, _controller->warning());
+	addOptionRow(Option::Everyone);
+	addOptionRow(Option::Contacts);
+	addOptionRow(Option::Nobody);
+	addLabel(content, _controller->warning());
 	AddSkip(content);
 
 	AddDivider(content);
@@ -297,7 +298,7 @@ void EditPrivacyBox::setupContent() {
 	AddSubsectionTitle(content, lng_edit_privacy_exceptions);
 	const auto always = addExceptionLink(Exception::Always);
 	const auto never = addExceptionLink(Exception::Never);
-	AddLabel(content, _controller->exceptionsDescription());
+	addLabel(content, _controller->exceptionsDescription());
 	AddSkip(content);
 
 	addButton(langFactory(lng_settings_save), [=] {
diff --git a/Telegram/SourceFiles/boxes/edit_privacy_box.h b/Telegram/SourceFiles/boxes/edit_privacy_box.h
index 831e6c637..2da4ff76a 100644
--- a/Telegram/SourceFiles/boxes/edit_privacy_box.h
+++ b/Telegram/SourceFiles/boxes/edit_privacy_box.h
@@ -46,6 +46,7 @@ public:
 			return true;
 		}
 		virtual LangKey optionsTitleKey() = 0;
+		virtual LangKey optionLabelKey(Option option);
 		virtual rpl::producer<QString> warning() {
 			return rpl::never<QString>();
 		}
@@ -82,14 +83,6 @@ public:
 		std::unique_ptr<Controller> controller,
 		const Value &value);
 
-	static Ui::Radioenum<Option> *AddOption(
-		not_null<Ui::VerticalLayout*> container,
-		const std::shared_ptr<Ui::RadioenumGroup<Option>> &group,
-		Option option);
-	static Ui::FlatLabel *AddLabel(
-		not_null<Ui::VerticalLayout*> container,
-		rpl::producer<QString> text);
-
 protected:
 	void prepare() override;
 
@@ -98,6 +91,14 @@ private:
 	void setupContent();
 	QVector<MTPInputPrivacyRule> collectResult();
 
+	Ui::Radioenum<Option> *addOption(
+		not_null<Ui::VerticalLayout*> container,
+		const std::shared_ptr<Ui::RadioenumGroup<Option>> &group,
+		Option option);
+	Ui::FlatLabel *addLabel(
+		not_null<Ui::VerticalLayout*> container,
+		rpl::producer<QString> text);
+
 	void editExceptionUsers(Exception exception, Fn<void()> done);
 	std::vector<not_null<UserData*>> &exceptionUsers(Exception exception);
 
diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp
index a72d1b2f0..136d4b19e 100644
--- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp
+++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp
@@ -384,6 +384,16 @@ LangKey CallsPeer2PeerPrivacyController::optionsTitleKey() {
 	return lng_edit_privacy_calls_p2p_header;
 }
 
+LangKey CallsPeer2PeerPrivacyController::optionLabelKey(
+		EditPrivacyBox::Option option) {
+	switch (option) {
+		case Option::Everyone: return lng_edit_privacy_calls_p2p_everyone;
+		case Option::Contacts: return lng_edit_privacy_calls_p2p_contacts;
+		case Option::Nobody: return lng_edit_privacy_calls_p2p_nobody;
+	}
+	Unexpected("Option value in optionsLabelKey.");
+}
+
 rpl::producer<QString> CallsPeer2PeerPrivacyController::warning() {
 	return Lang::Viewer(lng_settings_peer_to_peer_about);
 }
diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.h b/Telegram/SourceFiles/settings/settings_privacy_controllers.h
index 7eff55770..724283a0a 100644
--- a/Telegram/SourceFiles/settings/settings_privacy_controllers.h
+++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.h
@@ -98,6 +98,7 @@ public:
 
 	QString title() override;
 	LangKey optionsTitleKey() override;
+	LangKey optionLabelKey(EditPrivacyBox::Option option) override;
 	rpl::producer<QString> warning() override;
 	LangKey exceptionButtonTextKey(Exception exception) override;
 	QString exceptionBoxTitle(Exception exception) override;
diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.cpp b/Telegram/SourceFiles/settings/settings_privacy_security.cpp
index 86dce2b29..693b3b1a1 100644
--- a/Telegram/SourceFiles/settings/settings_privacy_security.cpp
+++ b/Telegram/SourceFiles/settings/settings_privacy_security.cpp
@@ -44,17 +44,33 @@ rpl::producer<> PasscodeChanges() {
 	));
 }
 
-QString PrivacyBase(ApiWrap::Privacy::Option option) {
-	const auto key = [&] {
+QString PrivacyBase(
+		ApiWrap::Privacy::Key key,
+		ApiWrap::Privacy::Option option) {
+	const auto phrase = [&] {
+		using Key = ApiWrap::Privacy::Key;
 		using Option = ApiWrap::Privacy::Option;
-		switch (option) {
-		case Option::Everyone: return lng_edit_privacy_everyone;
-		case Option::Contacts: return lng_edit_privacy_contacts;
-		case Option::Nobody: return lng_edit_privacy_nobody;
+		switch (key) {
+		case Key::CallsPeer2Peer:
+			switch (option) {
+			case Option::Everyone:
+				return lng_edit_privacy_calls_p2p_everyone;
+			case Option::Contacts:
+				return lng_edit_privacy_calls_p2p_contacts;
+			case Option::Nobody:
+				return lng_edit_privacy_calls_p2p_nobody;
+			}
+			Unexpected("Value in Privacy::Option.");
+		default:
+			switch (option) {
+			case Option::Everyone: return lng_edit_privacy_everyone;
+			case Option::Contacts: return lng_edit_privacy_contacts;
+			case Option::Nobody: return lng_edit_privacy_nobody;
+			}
+			Unexpected("Value in Privacy::Option.");
 		}
-		Unexpected("Value in Privacy::Option.");
 	}();
-	return lang(key);
+	return lang(phrase);
 }
 
 void SetupPrivacy(not_null<Ui::VerticalLayout*> container) {
@@ -84,7 +100,7 @@ void SetupPrivacy(not_null<Ui::VerticalLayout*> container) {
 		Auth().api().reloadPrivacy(key);
 		return Auth().api().privacyValue(
 			key
-		) | rpl::map([](const Privacy &value) {
+		) | rpl::map([=](const Privacy &value) {
 			auto add = QStringList();
 			if (const auto never = value.never.size()) {
 				add.push_back("-" + QString::number(never));
@@ -93,9 +109,10 @@ void SetupPrivacy(not_null<Ui::VerticalLayout*> container) {
 				add.push_back("+" + QString::number(always));
 			}
 			if (!add.isEmpty()) {
-				return PrivacyBase(value.option) + " (" + add.join(", ") + ")";
+				return PrivacyBase(key, value.option)
+					+ " (" + add.join(", ") + ")";
 			} else {
-				return PrivacyBase(value.option);
+				return PrivacyBase(key, value.option);
 			}
 		});
 	};