void InitializeUI()
    {
        var os  = Environment.OSVersion;
        var pid = os.Platform;

        switch (pid)
        {
        case PlatformID.MacOSX:
            this.Title = "DeepLearnUI (OSX, Mono, Beta)";
            break;

        case PlatformID.Unix:
            this.Title = "DeepLearnUI (Unix/Linux/OSX, Mono, Beta)";
            break;

        case PlatformID.Xbox:
            this.Title = "DeepLearnUI (Xbox, Beta)";
            break;

        case PlatformID.WinCE:
            this.Title = "DeepLearnUI (WinCE x86/x64, Beta)";
            break;

        case PlatformID.Win32NT:
            this.Title = "DeepLearnUI (WinNT x86/x64, Beta)";
            break;

        case PlatformID.Win32Windows:
            this.Title = "DeepLearnUI (Win x86/x64, 1.0)";
            break;

        default:
            this.Title = "DeepLearnUI (Unknown OS, Beta)";
            break;
        }

        Confirm = new Dialog(
            "Are you sure?",
            this,
            DialogFlags.Modal,
            "Yes", ResponseType.Accept,
            "No", ResponseType.Cancel
            )
        {
            Resizable    = false,
            KeepAbove    = true,
            TypeHint     = WindowTypeHint.Dialog,
            WidthRequest = 250
        };

        Confirm.ActionArea.LayoutStyle = ButtonBoxStyle.Center;
        Confirm.WindowStateEvent      += OnWindowStateEvent;

        ImageLoader = new FileChooserDialog(
            "Load image",
            this,
            FileChooserAction.Open,
            "Cancel", ResponseType.Cancel,
            "Open", ResponseType.Accept
            );

        ClearDigit();

        CopyDrawing(Digit);

        CopyClassification();

        ProbabilityZ.IsEditable = false;
        Probability1.IsEditable = false;
        Probability2.IsEditable = false;
        Probability3.IsEditable = false;
        Probability4.IsEditable = false;
        Probability5.IsEditable = false;
        Probability6.IsEditable = false;
        Probability7.IsEditable = false;
        Probability8.IsEditable = false;
        Probability9.IsEditable = false;

        ScoreBox.ModifyFont(Pango.FontDescription.FromString("Verdana 16"));
        ClassificationBox.ModifyFont(Pango.FontDescription.FromString("Verdana 16"));

        for (int i = 0; i < cnn.Layers.Count; i++)
        {
            switch (cnn.Layers[i].Type)
            {
            case LayerTypes.Input:
                NetworkLayers.AppendText(String.Format("{0} Input", i));
                break;

            case LayerTypes.Convolution:
                NetworkLayers.AppendText(String.Format("{0} Convolution", i));
                break;

            case LayerTypes.Subsampling:
                NetworkLayers.AppendText(String.Format("{0} Subsampling / Pooling", i));
                break;
            }
        }

        PrepareImage(ActivationMap);
        PrepareImage(FeatureVector);
        PrepareImage(Output);
        PrepareImage(Weights);
        PrepareImage(NetworkBias);
        PrepareImage(FeatureMap);
        PrepareImage(BiasMap);

        NetworkLayers.Sensitive       = false;
        ActivationMapScroll.Sensitive = false;

        HideFeatureMaps();
    }