protected void ScreenChange(SceneData screen, params object[] options)
        {
            f.Remove(current);
            current.Destroy();
            current = screen.CreateInstance(options);
            f.Put(current, 0, 0);

            f.Remove(side);
            side.Destroy();
            side = new MySideBar();
            f.Put(side, 0, 20);
            side.Show();

            if (currentScene == "Logger")
            {
                var logScreen = current as LoggerWindow;
                if (logScreen != null)
                {
                    side.ExpandEvent += (sender, e) => {
                        logScreen.tv.Visible = false;
                        logScreen.tv.QueueDraw();
                    };

                    side.CollapseEvent += (sender, e) => {
                        logScreen.tv.Visible = true;
                        logScreen.tv.QueueDraw();
                    };
                }
            }
            else if (currentScene == "Alarms")
            {
                var alarmScreen = current as AlarmWindow;
                if (alarmScreen != null)
                {
                    side.ExpandEvent += (sender, e) => {
                        alarmScreen.tv.Visible = false;
                        alarmScreen.tv.QueueDraw();
                    };

                    side.CollapseEvent += (sender, e) => {
                        alarmScreen.tv.Visible = true;
                        alarmScreen.tv.QueueDraw();
                    };
                }
            }

            f.Remove(notification);
            notification = new MyNotificationBar();
            f.Put(notification, 0, 0);
            notification.Show();

            QueueDraw();
        }