public IFaceDatabase <T> Open()
        {
            var dialog = new OpenFileDialog
            {
                InitialDirectory = SerializeFile == null ? _defaultSerializePath : Path.GetDirectoryName(SerializeFile),
                DefaultExt       = "xml",
                Filter           = FileFilter,
                Title            = "Select file containing saved face database"
            };

            var result = dialog.STAShowDialog();
            // make a backup of the current database in case something goes wrong
            var backup = FaceDatabase.Backup();

            if (result == DialogResult.OK)
            {
                try
                {
                    using (var fs = dialog.OpenFile())
                    {
                        FaceDatabase.Deserialize(fs);
                    }
                }
                catch (Exception exc)
                {
                    MessageBox.Show(
                        $"Error: An error occured while loading the database from {dialog.FileName}: {Environment.NewLine}{exc}");
                    // something went wrong -> revert
                    FaceDatabase.Restore(backup);
                }
            }

            SerializeFile = dialog.FileName;

            return(FaceDatabase);
        }