public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            GroupSimilarTimeEntriesLabel.Text = Resources.GroupTimeEntries;
            YourProfileCellLabel.Text         = Resources.YourProfile;
            WorkspaceCellLabel.Text           = Resources.Workspace;
            FormatSettingsHeaderLabel.Text    = Resources.FormatSettings;
            DateFormatCellLabel.Text          = Resources.DateFormat;
            Use24HourClockCellLabel.Text      = Resources.Use24HourClock;
            DurationFormatCellLabel.Text      = Resources.DurationFormat;
            FirstDayOfTheWeekCellLabel.Text   = Resources.FirstDayOfTheWeek;
            ManualModeCellLabel.Text          = Resources.ManualMode;
            ManualModeDescriptionLabel.Text   = Resources.ManualModeDescription;
            CalendarSettingsCellLabel.Text    = Resources.CalendarSettingsTitle;
            SmartAlertCellLabel.Text          = Resources.SmartAlerts;
            SubmitFeedbackCellLabel.Text      = Resources.SubmitFeedback;
            AboutCellLabel.Text          = Resources.About;
            HelpCellLabel.Text           = Resources.Help;
            LoggingOutLabel.Text         = Resources.LoggingOutSecurely;
            SyncingLabel.Text            = Resources.Syncing;
            SyncedLabel.Text             = Resources.SyncCompleted;
            FeedbackToastTitleLabel.Text = Resources.DoneWithExclamationMark.ToUpper();
            FeedbackToastTextLabel.Text  = Resources.ThankYouForTheFeedback;
            LogoutButton.SetTitle(Resources.SignOutOfToggl, UIControlState.Normal);

            prepareViews();

            Title             = ViewModel.Title;
            VersionLabel.Text = ViewModel.Version;

            LoggingOutView.Hidden          = true;
            SendFeedbackSuccessView.Hidden = true;

            ViewModel.Email
            .Subscribe(EmailLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            ViewModel.IsSynced
            .Subscribe(SyncedView.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.WorkspaceName
            .Subscribe(WorkspaceLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            ViewModel.DurationFormat
            .Subscribe(DurationFormatLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            ViewModel.IsRunningSync
            .Subscribe(SyncingView.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.DateFormat
            .Subscribe(DateFormatLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            ViewModel.BeginningOfWeek
            .Subscribe(BeginningOfWeekLabel.Rx().Text())
            .DisposedBy(DisposeBag);

            ViewModel.IsFeedbackSuccessViewShowing
            .Subscribe(SendFeedbackSuccessView.Rx().AnimatedIsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.LoggingOut
            .Subscribe(_ =>
            {
                LoggingOutView.Hidden = false;
                SyncingView.Hidden    = true;
                SyncedView.Hidden     = true;
            })
            .DisposedBy(DisposeBag);

            HelpView.Rx()
            .BindAction(ViewModel.OpenHelpView)
            .DisposedBy(DisposeBag);

            LogoutButton.Rx()
            .BindAction(ViewModel.TryLogout)
            .DisposedBy(DisposeBag);

            AboutView.Rx()
            .BindAction(ViewModel.OpenAboutView)
            .DisposedBy(DisposeBag);

            if (UIDevice.CurrentDevice.CheckSystemVersion(12, 0))
            {
                ShortcutsSettingsView.Rx()
                .BindAction(ViewModel.OpenSiriShortcuts)
                .DisposedBy(DisposeBag);

                WorkflowsSettingsView.Rx()
                .BindAction(ViewModel.OpenSiriWorkflows)
                .DisposedBy(DisposeBag);
            }
            else
            {
                hideSiriSection();
            }

            FeedbackView.Rx()
            .BindAction(ViewModel.SubmitFeedback)
            .DisposedBy(DisposeBag);

            DateFormatView.Rx()
            .BindAction(ViewModel.SelectDateFormat)
            .DisposedBy(DisposeBag);

            WorkspaceView.Rx()
            .BindAction(ViewModel.PickDefaultWorkspace)
            .DisposedBy(DisposeBag);

            DurationFormatView.Rx()
            .BindAction(ViewModel.SelectDurationFormat)
            .DisposedBy(DisposeBag);

            ManualModeSwitch.Rx().Changed()
            .Subscribe(ViewModel.ToggleManualMode)
            .DisposedBy(DisposeBag);

            GroupSimilarTimeEntriesSwitch.Rx()
            .BindAction(ViewModel.ToggleTimeEntriesGrouping)
            .DisposedBy(DisposeBag);

            BeginningOfWeekView.Rx()
            .BindAction(ViewModel.SelectBeginningOfWeek)
            .DisposedBy(DisposeBag);

            CalendarSettingsView.Rx()
            .BindAction(ViewModel.OpenCalendarSettings)
            .DisposedBy(DisposeBag);

            SendFeedbackSuccessView.Rx().Tap()
            .Subscribe(ViewModel.CloseFeedbackSuccessView)
            .DisposedBy(DisposeBag);

            NotificationSettingsView.Rx()
            .BindAction(ViewModel.OpenNotificationSettings)
            .DisposedBy(DisposeBag);

            TwentyFourHourClockSwitch.Rx().Changed()
            .Subscribe(ViewModel.ToggleTwentyFourHourSettings.Inputs)
            .DisposedBy(DisposeBag);

            UIApplication.Notifications
            .ObserveWillEnterForeground((sender, e) => startAnimations())
            .DisposedBy(DisposeBag);

            if (!ViewModel.CalendarSettingsEnabled)
            {
                hideCalendarSettingsSection();
            }

            ViewModel.IsManualModeEnabled
            .FirstAsync()
            .Subscribe(isEnabled => ManualModeSwitch.SetState(isEnabled, false))
            .DisposedBy(DisposeBag);

            ViewModel.IsGroupingTimeEntries
            .FirstAsync()
            .Subscribe(isGrouping => GroupSimilarTimeEntriesSwitch.SetState(isGrouping, false))
            .DisposedBy(DisposeBag);

            ViewModel.UseTwentyFourHourFormat
            .FirstAsync()
            .Subscribe(useTwentyFourHourFormat => TwentyFourHourClockSwitch.SetState(useTwentyFourHourFormat, false))
            .DisposedBy(DisposeBag);
        }
        void ReleaseDesignerOutlets()
        {
            if (AboutCellLabel != null)
            {
                AboutCellLabel.Dispose();
                AboutCellLabel = null;
            }

            if (AboutView != null)
            {
                AboutView.Dispose();
                AboutView = null;
            }

            if (BeginningOfWeekLabel != null)
            {
                BeginningOfWeekLabel.Dispose();
                BeginningOfWeekLabel = null;
            }

            if (BeginningOfWeekView != null)
            {
                BeginningOfWeekView.Dispose();
                BeginningOfWeekView = null;
            }

            if (CalendarSectionTopConstraint != null)
            {
                CalendarSectionTopConstraint.Dispose();
                CalendarSectionTopConstraint = null;
            }

            if (CalendarSettingsCellLabel != null)
            {
                CalendarSettingsCellLabel.Dispose();
                CalendarSettingsCellLabel = null;
            }

            if (CalendarSettingsSection != null)
            {
                CalendarSettingsSection.Dispose();
                CalendarSettingsSection = null;
            }

            if (CalendarSettingsView != null)
            {
                CalendarSettingsView.Dispose();
                CalendarSettingsView = null;
            }

            if (DateFormatCellLabel != null)
            {
                DateFormatCellLabel.Dispose();
                DateFormatCellLabel = null;
            }

            if (DateFormatLabel != null)
            {
                DateFormatLabel.Dispose();
                DateFormatLabel = null;
            }

            if (DateFormatView != null)
            {
                DateFormatView.Dispose();
                DateFormatView = null;
            }

            if (DurationFormatCellLabel != null)
            {
                DurationFormatCellLabel.Dispose();
                DurationFormatCellLabel = null;
            }

            if (DurationFormatLabel != null)
            {
                DurationFormatLabel.Dispose();
                DurationFormatLabel = null;
            }

            if (DurationFormatView != null)
            {
                DurationFormatView.Dispose();
                DurationFormatView = null;
            }

            if (EmailLabel != null)
            {
                EmailLabel.Dispose();
                EmailLabel = null;
            }

            if (EmailView != null)
            {
                EmailView.Dispose();
                EmailView = null;
            }

            if (FeedbackToastTextLabel != null)
            {
                FeedbackToastTextLabel.Dispose();
                FeedbackToastTextLabel = null;
            }

            if (FeedbackToastTitleLabel != null)
            {
                FeedbackToastTitleLabel.Dispose();
                FeedbackToastTitleLabel = null;
            }

            if (FeedbackView != null)
            {
                FeedbackView.Dispose();
                FeedbackView = null;
            }

            if (FirstDayOfTheWeekCellLabel != null)
            {
                FirstDayOfTheWeekCellLabel.Dispose();
                FirstDayOfTheWeekCellLabel = null;
            }

            if (FormatSettingsHeaderLabel != null)
            {
                FormatSettingsHeaderLabel.Dispose();
                FormatSettingsHeaderLabel = null;
            }

            if (FormatSettingsTitle != null)
            {
                FormatSettingsTitle.Dispose();
                FormatSettingsTitle = null;
            }

            if (GroupSimilarTimeEntriesLabel != null)
            {
                GroupSimilarTimeEntriesLabel.Dispose();
                GroupSimilarTimeEntriesLabel = null;
            }

            if (GroupSimilarTimeEntriesSwitch != null)
            {
                GroupSimilarTimeEntriesSwitch.Dispose();
                GroupSimilarTimeEntriesSwitch = null;
            }

            if (HelpCellLabel != null)
            {
                HelpCellLabel.Dispose();
                HelpCellLabel = null;
            }

            if (HelpView != null)
            {
                HelpView.Dispose();
                HelpView = null;
            }

            if (LoggingOutActivityIndicatorView != null)
            {
                LoggingOutActivityIndicatorView.Dispose();
                LoggingOutActivityIndicatorView = null;
            }

            if (LoggingOutIndicator != null)
            {
                LoggingOutIndicator.Dispose();
                LoggingOutIndicator = null;
            }

            if (LoggingOutLabel != null)
            {
                LoggingOutLabel.Dispose();
                LoggingOutLabel = null;
            }

            if (LoggingOutView != null)
            {
                LoggingOutView.Dispose();
                LoggingOutView = null;
            }

            if (LogoutButton != null)
            {
                LogoutButton.Dispose();
                LogoutButton = null;
            }

            if (LogoutContainerView != null)
            {
                LogoutContainerView.Dispose();
                LogoutContainerView = null;
            }

            if (LogoutVerticalOffsetConstraint != null)
            {
                LogoutVerticalOffsetConstraint.Dispose();
                LogoutVerticalOffsetConstraint = null;
            }

            if (ManualModeCellLabel != null)
            {
                ManualModeCellLabel.Dispose();
                ManualModeCellLabel = null;
            }

            if (ManualModeDescriptionLabel != null)
            {
                ManualModeDescriptionLabel.Dispose();
                ManualModeDescriptionLabel = null;
            }

            if (ManualModeSwitch != null)
            {
                ManualModeSwitch.Dispose();
                ManualModeSwitch = null;
            }

            if (ManualModeView != null)
            {
                ManualModeView.Dispose();
                ManualModeView = null;
            }

            if (MiscSection != null)
            {
                MiscSection.Dispose();
                MiscSection = null;
            }

            if (NotificationSettingsView != null)
            {
                NotificationSettingsView.Dispose();
                NotificationSettingsView = null;
            }

            if (ScrollView != null)
            {
                ScrollView.Dispose();
                ScrollView = null;
            }

            if (SendFeedbackSuccessView != null)
            {
                SendFeedbackSuccessView.Dispose();
                SendFeedbackSuccessView = null;
            }

            if (ShortcutsSettingsView != null)
            {
                ShortcutsSettingsView.Dispose();
                ShortcutsSettingsView = null;
            }

            if (SiriSection != null)
            {
                SiriSection.Dispose();
                SiriSection = null;
            }

            if (SiriSectionTopConstraint != null)
            {
                SiriSectionTopConstraint.Dispose();
                SiriSectionTopConstraint = null;
            }

            if (SmartAlertCellLabel != null)
            {
                SmartAlertCellLabel.Dispose();
                SmartAlertCellLabel = null;
            }

            if (SubmitFeedbackCellLabel != null)
            {
                SubmitFeedbackCellLabel.Dispose();
                SubmitFeedbackCellLabel = null;
            }

            if (SyncedIcon != null)
            {
                SyncedIcon.Dispose();
                SyncedIcon = null;
            }

            if (SyncedLabel != null)
            {
                SyncedLabel.Dispose();
                SyncedLabel = null;
            }

            if (SyncedView != null)
            {
                SyncedView.Dispose();
                SyncedView = null;
            }

            if (SyncingActivityIndicatorView != null)
            {
                SyncingActivityIndicatorView.Dispose();
                SyncingActivityIndicatorView = null;
            }

            if (SyncingIndicator != null)
            {
                SyncingIndicator.Dispose();
                SyncingIndicator = null;
            }

            if (SyncingLabel != null)
            {
                SyncingLabel.Dispose();
                SyncingLabel = null;
            }

            if (SyncingView != null)
            {
                SyncingView.Dispose();
                SyncingView = null;
            }

            if (TopConstraint != null)
            {
                TopConstraint.Dispose();
                TopConstraint = null;
            }

            if (TwentyFourHourClockSwitch != null)
            {
                TwentyFourHourClockSwitch.Dispose();
                TwentyFourHourClockSwitch = null;
            }

            if (TwentyFourHourClockView != null)
            {
                TwentyFourHourClockView.Dispose();
                TwentyFourHourClockView = null;
            }

            if (Use24HourClockCellLabel != null)
            {
                Use24HourClockCellLabel.Dispose();
                Use24HourClockCellLabel = null;
            }

            if (VersionLabel != null)
            {
                VersionLabel.Dispose();
                VersionLabel = null;
            }

            if (WorkflowsSettingsView != null)
            {
                WorkflowsSettingsView.Dispose();
                WorkflowsSettingsView = null;
            }

            if (WorkspaceCellLabel != null)
            {
                WorkspaceCellLabel.Dispose();
                WorkspaceCellLabel = null;
            }

            if (WorkspaceLabel != null)
            {
                WorkspaceLabel.Dispose();
                WorkspaceLabel = null;
            }

            if (WorkspaceView != null)
            {
                WorkspaceView.Dispose();
                WorkspaceView = null;
            }

            if (YourProfileCellLabel != null)
            {
                YourProfileCellLabel.Dispose();
                YourProfileCellLabel = null;
            }
        }