   *
   * Purpose: 		This module contains the user interface
   *			definitions for the automatic partitioner
+diff --git a/src/modules/DualMultiSelectionBox.ycp b/src/modules/DualMultiSelectionBox.ycp
+index 17c9c81..6671931 100644
+--- a/src/modules/DualMultiSelectionBox.ycp
++++ b/src/modules/DualMultiSelectionBox.ycp
+@@ -457,7 +457,15 @@ list<string> reverse( list<string> v )
+ 	switch (widget)
+ 	{
+ 	    case `unselected:
++    // no fall thrue
++		list<any> tmp1 = (list<any>) UI::QueryWidget(`id(`unselected), `SelectedItems);
++		selected = flatten([ selected, tmp1 ]);
++		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
++                y2milestone( "selected:%1", selected );
++	    } break;
++
+ 	    case `add: {
++    // no fall thrue
+ 		list<any> tmp1 = (list<any>) UI::QueryWidget(`id(`unselected), `SelectedItems);
+ 		selected = flatten([ selected, tmp1 ]);
+ 		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
+@@ -465,6 +473,14 @@ list<string> reverse( list<string> v )
+ 	    } break;
+ 
+ 	    case `selected:
++    // no fall thrue
++list<any> tmp1 = (list<any>) UI::QueryWidget(`id(`selected), `SelectedItems);
++		selected = filter(any tmp2, selected, { return !contains(tmp1, tmp2); });
++		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
++                sel = (list<string>)filter(any tmp2, sel, { return !contains(tmp1, tmp2); });
++                y2milestone( "selected:%1", selected );
++	    } break;
++
+ 	    case `remove: {
+ 		list<any> tmp1 = (list<any>) UI::QueryWidget(`id(`selected), `SelectedItems);
+ 		selected = filter(any tmp2, selected, { return !contains(tmp1, tmp2); });
+@@ -501,6 +517,31 @@ list<string> reverse( list<string> v )
+ 	    } break;
+ 
+ 	    case `up:
++    // no fall thrue
++                boolean up = (widget==`up);
++		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
++                integer cnt = -1;
++                integer siz = size(selected)-1;
++                map<string,integer> sm = 
++                    listmap( string s, 
++                             (list<string>)selected, 
++                             { cnt=cnt+1; return( $[ s : cnt ] ); } );
++                cnt = 0;
++                integer diff = up ? -1 : 1;
++                if( !up )
++                    sel = reverse(sel);
++                foreach( string s, sel,
++                    {
++                    integer idx = sm[s]:0;
++                    if( (up && idx>cnt) || (!up && idx<siz-cnt) )
++                        {
++                        selected = list::swap( selected, idx+diff, idx );
++                        }
++                    cnt=cnt+1;
++                    });
++                y2milestone( "change:%1 selected:%2", sel, selected  );
++	    } break;
++
+ 	    case `down: {
+                 boolean up = (widget==`up);
+ 		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
+@@ -527,6 +568,16 @@ list<string> reverse( list<string> v )
+ 	    } break;
+ 
+ 	    case `top:
++    // no fall thrue
++                boolean up = (widget==`top);
++		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
++                selected = filter( string s, (list<string>)selected, ``(!contains( sel, s )));
++                if( up )
++                    selected = merge( sel, selected );
++                else
++                    selected = merge( selected, sel );
++                y2milestone( "change:%1 selected:%2", sel, selected  );
++	    } break;
+ 	    case `bottom: {
+                 boolean up = (widget==`top);
+ 		sel = (list<string>) UI::QueryWidget(`id(`selected), `SelectedItems);
+diff --git a/src/modules/Partitions.ycp b/src/modules/Partitions.ycp
+index 3c456d4..9b724e5 100644
+--- a/src/modules/Partitions.ycp
++++ b/src/modules/Partitions.ycp
+@@ -664,99 +664,99 @@ global string FsIdToString(integer fs_id)
+ {
+     switch (fs_id)
+     {
+-	case 0x0: return "empty";
+-	case 0x1: return "FAT12";
+-	case 0x2: return "XENIX root";
+-	case 0x3: return "XENIX usr";
+-	case 0x4: return "FAT16 <32M";
+-	case 0x5: return "Extended";
+-	case 0x6: return "FAT16";
+-	case 0x7: return "HPFS/NTFS";
+-	case 0x8: return "AIX";
+-	case 0x9: return "AIX boot";
+-	case 0xa: return "OS/2 boot manager";
+-	case 0xb: return "Win95 FAT32";
+-	case 0xc: return "Win95 FAT32 LBA";
+-	case 0xe: return "Win95 FAT16";
+-	case 0xf: return "Extended";
+-	case 0xa7: return "NeXTSTEP";
+-	case 0xb7: return "BSDI fs";
+-	case 0xb8: return "BSDI swap";
+-	case 0xc1: return "DRDOS/sec";
+-	case 0xc4: return "DRDOS/sec";
+-	case 0xc6: return "DRDOS/sec";
+-	case 0xc7: return "Syrinx";
+-	case 0xda: return "Non-Fs data";
+-	case 0xdb: return "CP/M / CTOS";
+-	case 0xde: return "Dell Utility";
+-	case 0xe1: return "DOS access";
+-	case 0xe3: return "DOS R/O";
+-	case 0xe4: return "SpeedStor";
+-	case 0xeb: return "BeOS fs";
+-	case 0xee: return "EFI GPT";
+-	case 0xef: return "EFI (FAT-12/16)";
+-	case 0xf1: return "SpeedStor";
+-	case 0xf4: return "SpeedStor";
+-	case 0xf2: return "DOS secondary";
+-	case 0xfd: return "Linux RAID";
+-	case 0xfe: return "LANstep";
+-	case 0xff: return "BBT or NBO reserved";
+-	case 0x10: return "OPUS";
+-	case 0x11: return "Hidden FAT12";
+-	case 0x12: return "Vendor diag";
+-	case 0x14: return "Hidden FAT16";
+-	case 0x16: return "Hidden FAT16";
+-	case 0x17: return "Hidden HPFS/NTFS";
+-	case 0x18: return "AST Windows";
+-	case 0x1b: return "Hidden Win95";
+-	case 0x1c: return "Hidden Win95";
+-	case 0x1e: return "Hidden Win95";
+-	case 0x24: return "NEC DOS";
+-	case 0x39: return "Plan 9";
+-	case 0x3c: return "PartitionMagic";
+-	case 0x40: return "Venix 80286";
+-	case 0x41: return "PPC PReP Boot";
+-	case 0x42: return "SFS";
+-	case 0x4d: return "QNX4.x";
+-	case 0x4e: return "QNX4.x 2nd par";
+-	case 0x4f: return "QNX4.x 3rd par";
+-	case 0x50: return "OnTrack DM";
+-	case 0x51: return "OnTrack DM6";
+-	case 0x52: return "CP/M";
+-	case 0x53: return "OnTrack DM6";
+-	case 0x54: return "OnTrack DM6";
+-	case 0x55: return "EZ-Drive";
+-	case 0x56: return "Golden Bow";
+-	case 0x5c: return "Priam Edisk";
+-	case 0x61: return "SpeedStor";
+-	case 0x63: return "GNU HURD";
+-	case 0x64: return "Novell NetWare";
+-	case 0x65: return "Novell NetWare";
+-	case 0x70: return "DiskSecure";
+-	case 0x75: return "PC/IX";
+-	case 0x80: return "Old Minix";
+-	case 0x81: return "Minix";
+-	case 0x82: return "Linux swap";
+-	case 0x83: return "Linux native";
+-	case 0x84: return "OS/2 hidden";
+-	case 0x85: return "Linux extended";
+-	case 0x86: return "NTFS volume";
+-	case 0x87: return "NTFS volume";
+-	case 0x8e: return "Linux LVM";
+-	case 0x93: return "Amoeba";
+-	case 0x94: return "Amoeba BBT";
+-	case 0x9f: return "BSD/OS";
+-	case 0xa0: return "Hibernation";
+-	case 0xa5: return "FreeBSD";
+-	case 0xa6: return "OpenBSD";
+-	case 0xa9: return "NetBSD";
+-	case 0x102: return "Apple_HFS";
+-	case 0x103: return "EFI boot";
+-	case 0x104: return "Service";
+-	case 0x105: return "Microsoft reserved";
+-	case 0x106: return "Apple_UFS";
+-	case 0x107: return "BIOS Grub";
+-	default: return "unknown";
++	case 0x0: return "empty"; break;
++	case 0x1: return "FAT12"; break;
++	case 0x2: return "XENIX root"; break;
++	case 0x3: return "XENIX usr"; break;
++	case 0x4: return "FAT16 <32M"; break;
++	case 0x5: return "Extended"; break;
++	case 0x6: return "FAT16"; break;
++	case 0x7: return "HPFS/NTFS"; break;
++	case 0x8: return "AIX"; break;
++	case 0x9: return "AIX boot"; break;
++	case 0xa: return "OS/2 boot manager"; break;
++	case 0xb: return "Win95 FAT32"; break;
++	case 0xc: return "Win95 FAT32 LBA"; break;
++	case 0xe: return "Win95 FAT16"; break;
++	case 0xf: return "Extended"; break;
++	case 0xa7: return "NeXTSTEP"; break;
++	case 0xb7: return "BSDI fs"; break;
++	case 0xb8: return "BSDI swap"; break;
++	case 0xc1: return "DRDOS/sec"; break;
++	case 0xc4: return "DRDOS/sec"; break;
++	case 0xc6: return "DRDOS/sec"; break;
++	case 0xc7: return "Syrinx"; break;
++	case 0xda: return "Non-Fs data"; break;
++	case 0xdb: return "CP/M / CTOS"; break;
++	case 0xde: return "Dell Utility"; break;
++	case 0xe1: return "DOS access"; break;
++	case 0xe3: return "DOS R/O"; break;
++	case 0xe4: return "SpeedStor"; break;
++	case 0xeb: return "BeOS fs"; break;
++	case 0xee: return "EFI GPT"; break;
++	case 0xef: return "EFI (FAT-12/16)"; break;
++	case 0xf1: return "SpeedStor"; break;
++	case 0xf4: return "SpeedStor"; break;
++	case 0xf2: return "DOS secondary"; break;
++	case 0xfd: return "Linux RAID"; break;
++	case 0xfe: return "LANstep"; break;
++	case 0xff: return "BBT or NBO reserved"; break;
++	case 0x10: return "OPUS"; break;
++	case 0x11: return "Hidden FAT12"; break;
++	case 0x12: return "Vendor diag"; break;
++	case 0x14: return "Hidden FAT16"; break;
++	case 0x16: return "Hidden FAT16"; break;
++	case 0x17: return "Hidden HPFS/NTFS"; break;
++	case 0x18: return "AST Windows"; break;
++	case 0x1b: return "Hidden Win95"; break;
++	case 0x1c: return "Hidden Win95"; break;
++	case 0x1e: return "Hidden Win95"; break;
++	case 0x24: return "NEC DOS"; break;
++	case 0x39: return "Plan 9"; break;
++	case 0x3c: return "PartitionMagic"; break;
++	case 0x40: return "Venix 80286"; break;
++	case 0x41: return "PPC PReP Boot"; break;
++	case 0x42: return "SFS"; break;
++	case 0x4d: return "QNX4.x"; break;
++	case 0x4e: return "QNX4.x 2nd par"; break;
++	case 0x4f: return "QNX4.x 3rd par"; break;
++	case 0x50: return "OnTrack DM"; break;
++	case 0x51: return "OnTrack DM6"; break;
++	case 0x52: return "CP/M"; break;
++	case 0x53: return "OnTrack DM6"; break;
++	case 0x54: return "OnTrack DM6"; break;
++	case 0x55: return "EZ-Drive"; break;
++	case 0x56: return "Golden Bow"; break;
++	case 0x5c: return "Priam Edisk"; break;
++	case 0x61: return "SpeedStor"; break;
++	case 0x63: return "GNU HURD"; break;
++	case 0x64: return "Novell NetWare"; break;
++	case 0x65: return "Novell NetWare"; break;
++	case 0x70: return "DiskSecure"; break;
++	case 0x75: return "PC/IX"; break;
++	case 0x80: return "Old Minix"; break;
++	case 0x81: return "Minix"; break;
++	case 0x82: return "Linux swap"; break;
++	case 0x83: return "Linux native"; break;
++	case 0x84: return "OS/2 hidden"; break;
++	case 0x85: return "Linux extended"; break;
++	case 0x86: return "NTFS volume"; break;
++	case 0x87: return "NTFS volume"; break;
++	case 0x8e: return "Linux LVM"; break;
++	case 0x93: return "Amoeba"; break;
++	case 0x94: return "Amoeba BBT"; break;
++	case 0x9f: return "BSD/OS"; break;
++	case 0xa0: return "Hibernation"; break;
++	case 0xa5: return "FreeBSD"; break;
++	case 0xa6: return "OpenBSD"; break;
++	case 0xa9: return "NetBSD"; break;
++	case 0x102: return "Apple_HFS"; break;
++	case 0x103: return "EFI boot"; break;
++	case 0x104: return "Service"; break;
++	case 0x105: return "Microsoft reserved"; break;
++	case 0x106: return "Apple_UFS"; break;
++	case 0x107: return "BIOS Grub"; break;
++	default: return "unknown"; break;
+     }
+ }
+ 
 diff --git a/src/modules/Storage.ycp b/src/modules/Storage.ycp
-index a9d6bae..43b11a9 100644
+index f78c3e5..0cd8d9d 100644
 --- a/src/modules/Storage.ycp
 +++ b/src/modules/Storage.ycp
 @@ -29,16 +29,16 @@

  *
  * $Id$
  */

diff --git a/src/include/partitioning/auto_part_create.ycp b/src/include/partitioning/auto_part_create.ycp
index a2a68e6..7e81d58 100644
--- a/src/include/partitioning/auto_part_create.ycp
+++ b/src/include/partitioning/auto_part_create.ycp
@@ -23,7 +23,7 @@
