diff -burN old/cobbler/webui/CobblerWeb.py build/cobbler/webui/CobblerWeb.py
--- old/cobbler/webui/CobblerWeb.py	2008-11-25 19:44:58.000000000 +0100
+++ build/cobbler/webui/CobblerWeb.py	2008-11-25 19:49:41.000000000 +0100
@@ -328,6 +328,117 @@
         else:
             return self.__render('empty.tmpl',{})
 
+    def system_list_action(self,actionname=None,targetlist=None,**args):
+        if not self.__xmlrpc_setup():
+            return self.xmlrpc_auth_failure()
+
+        if actionname is None:
+            return self.error_page("Actionname parameter is REQUIRED.")
+
+        if actionname == 'add':
+            return self.system_edit()
+
+        if targetlist is None:
+            return self.error_page("Targetlist parameter is REQUIRED.")
+
+        systems=[]
+        for targetname in targetlist.split():
+            systems.append(self.remote.get_system(targetname,self.token))
+
+        if actionname == 'copy':
+            return self.system_edit(targetname)
+
+        return self.__render( 'system_'+actionname+'.tmpl', {
+                'systems'    : systems,
+                'profiles'   : self.remote.get_profiles(),
+                'targetlist' : targetlist,
+            } )
+
+    def system_netboot(self,targetlist=None,netboot=None,**args):
+        if not self.__xmlrpc_setup():
+            return self.xmlrpc_auth_failure()
+        if targetlist is None:
+            return self.error_page("Targetlist parameter is REQUIRED.")
+        if netboot is None:
+            return self.error_page("Netboot parameter is REQUIRED.")
+        try:
+            systems=[]
+            for targetname in targetlist.split():
+                systems.append(self.remote.get_system_handle(targetname,self.token))
+            for system in systems:
+                self.remote.modify_system(system, 'netboot-enabled', netboot, self.token)
+                self.remote.save_system(system, self.token)
+            return self.system_list()
+        except Exception, e:
+            log_exc(self.apache)
+            return self.error_page("Error while saving system: %s" % str(e))
+
+    def system_profile(self,targetlist=None,profile=None,**args):
+        if not self.__xmlrpc_setup():
+            return self.xmlrpc_auth_failure()
+        if targetlist is None:
+            return self.error_page("Targetlist parameter is REQUIRED.")
+        if profile is None:
+            return self.error_page("Profile parameter is REQUIRED.")
+        try:
+            systems=[]
+            for targetname in targetlist.split():
+                systems.append(self.remote.get_system_handle(targetname,self.token))
+            for system in systems:
+                self.remote.modify_system(system, 'profile', profile, self.token)
+                self.remote.save_system(system, self.token)
+            return self.system_list()
+        except Exception, e:
+            log_exc(self.apache)
+            return self.error_page("Error while saving system: %s" % str(e))
+
+    def system_power(self,targetlist=None,power=None,**args):
+        if not self.__xmlrpc_setup():
+            return self.xmlrpc_auth_failure()
+        if targetlist is None:
+            return self.error_page("Targetlist parameter is REQUIRED.")
+        if power is None:
+            return self.error_page("Power parameter is REQUIRED.")
+        try:
+            systems=[]
+            for targetname in targetlist.split():
+                systems.append(self.remote.get_system_handle(targetname,self.token))
+            for system in systems:
+                self.remote.power_system(system, power, self.token)
+            return self.system_list()
+        except Exception, e:
+            log_exc(self.apache)
+            return self.error_page("Error while controlling power of system: %s" % str(e))
+
+    def system_rename(self,targetlist=None,name=None,**args):
+        if not self.__xmlrpc_setup():
+            return self.xmlrpc_auth_failure()
+        if targetlist is None:
+            return self.error_page("Targetlist parameter is REQUIRED.")
+        try:
+            systems=[]
+            for targetname in targetlist.split():
+                systems.append(self.remote.get_system_handle(targetname,self.token))
+            for system in systems:
+                self.remote.rename_system(system, name, self.token)
+            return self.system_list()
+        except Exception, e:
+            log_exc(self.apache)
+            return self.error_page("Error while renaming system: %s" % str(e))
+
+    def system_delete(self,targetlist=None,**args):
+        if not self.__xmlrpc_setup():
+            return self.xmlrpc_auth_failure()
+        if targetlist is None:
+            return self.error_page("Targetlist parameter is REQUIRED.")
+        try:
+            for targetname in targetlist.split():
+                self.remote.remove_system(targetname, self.token)
+            return self.system_list()
+        except Exception, e:
+            log_exc(self.apache)
+            return self.error_page("Error while deleting system: %s" % str(e))
+
     def system_save(self,name=None,oldname=None,comment=None,editmode="edit",profile=None,
                     new_or_edit=None,  
                     kopts=None, koptspost=None, ksmeta=None, owners=None, server_override=None, netboot='n', 
@@ -1053,6 +1164,12 @@
 
     system_edit.exposed = True
     system_list.exposed = True
+    system_list_action.exposed = True
+    system_netboot.exposed = True
+    system_profile.exposed = True
+    system_power.exposed = True
+    system_rename.exposed = True
+    system_delete.exposed = True
     system_save.exposed = True
 
     repo_edit.exposed = True
diff -burN old/setup.py build/setup.py
--- old/setup.py	2008-11-21 13:59:03.000000000 +0100
+++ build/setup.py	2008-11-25 19:45:25.000000000 +0100
@@ -302,6 +302,11 @@
                                 (wwwtmpl,           ['webui_templates/profile_list.tmpl']),
                                 (wwwtmpl,           ['webui_templates/profile_edit.tmpl']),
                                 (wwwtmpl,           ['webui_templates/system_list.tmpl']),
+                                (wwwtmpl,           ['webui_templates/system_netboot.tmpl']),
+                                (wwwtmpl,           ['webui_templates/system_rename.tmpl']),
+                                (wwwtmpl,           ['webui_templates/system_delete.tmpl']),
+                                (wwwtmpl,           ['webui_templates/system_profile.tmpl']),
+                                (wwwtmpl,           ['webui_templates/system_power.tmpl']),
                                 (wwwtmpl,           ['webui_templates/system_edit.tmpl']),
                                 (wwwtmpl,           ['webui_templates/repo_list.tmpl']),
                                 (wwwtmpl,           ['webui_templates/repo_edit.tmpl']),
diff -burN old/webui_templates/system_delete.tmpl build/webui_templates/system_delete.tmpl
--- old/webui_templates/system_delete.tmpl	1970-01-01 01:00:00.000000000 +0100
+++ build/webui_templates/system_delete.tmpl	2008-11-25 19:45:25.000000000 +0100
@@ -0,0 +1,39 @@
+#extends cobbler.webui.master
+
+#block body
+
+<form name="myform" method="post" action="$base_url?mode=system_delete">
+    <input type="hidden" name="targetlist" id="targetlist" value="$targetlist"/>
+    
+    <table class="sortable">
+    <thead>
+        <caption>Confirm deleting the following systems</caption>
+        <tr>
+            <th class="text">Name</th>
+        </tr>
+    </thead>
+    <tbody>
+        #set $evenodd = 1
+        #for $system in $systems
+        #if $evenodd % 2 == 0
+            #set $tr_class = "roweven"
+        #else
+            #set $tr_class = "rowodd"
+        #end if
+        #set $evenodd += 1
+
+        <tr class="$tr_class">
+            <td>
+                ${system.name}
+            </td>
+        </tr>
+        #end for
+    </tbody>
+    </table>
+
+    </p>
+    
+    <input type="submit" name="delete" value="Delete Systems"/>
+    <input type="button" name="cancel" onclick="javascript:history.go(-1)" value="Cancel"/>
+</form>
+#end block body
diff -burN old/webui_templates/system_list.tmpl build/webui_templates/system_list.tmpl
--- old/webui_templates/system_list.tmpl	2008-11-17 09:18:05.000000000 +0100
+++ build/webui_templates/system_list.tmpl	2008-11-25 19:45:25.000000000 +0100
@@ -2,17 +2,103 @@
 
 #block body
 
-    ## ==== BEGIN PAGE NAVIGATION ====
-    #set global what="system"
-    #include "/usr/share/cobbler/webui_templates/paginate.tmpl"
-    ## ==== END PAGE NAVIGATION ====
-
-<table class="sortable">
+<script language="Javascript">
+function items_check_all()
+{
+    var checkall=document.getElementById("itemsall").checked
+    var items=document.getElementsByName("items")
+    for( i = 0; i < items.length; ++i ) {
+	var item = items[i];
+	item.checked=checkall;
+    }
+}
+
+function items_checked_count()
+{
+    var items=document.getElementsByName("items")
+    var j=0;
+    for( i = 0; i < items.length; ++i ) {
+	var item = items[i];
+	if (item.checked) {
+	    j++;
+	}
+    }
+    return j;
+}
+
+function items_checked_values()
+{
+    var items=document.getElementsByName("items")
+    var s="";
+    for( i = 0; i < items.length; ++i ) {
+	var item = items[i];
+	if (item.checked) {
+	    if (s=="") {
+		s=item.value
+	    } else {
+		s=s+" "+item.value;
+	    }
+	}
+    }
+    return s;
+}
+
+function menuaction(actionname)
+{
+    var itemcount=items_checked_count();
+    if (
+        (itemcount == 0) &&
+        (
+         (actionname == "delete") ||
+         (actionname == "netboot") ||
+         (actionname == "profile") ||
+         (actionname == "power")
+        )
+       )
+    {
+	alert("Select the systems to " + actionname+" first");
+	return;
+    }
+    else if (
+             (itemcount != 1) &&
+             (
+              (actionname == "copy") ||
+              (actionname == "rename")
+             )
+            )
+    {
+	alert("Select only one system to " + actionname);
+	return;
+    }
+
+    document.getElementById("targetlist").value=items_checked_values();
+    document.getElementById("actionname").value=actionname;
+
+    document.myform.submit();
+}
+</script>
+
+<form name="myform" method="post" action="$base_url?mode=system_list_action">
+    <input type="hidden" name="actionname" id="actionname" value=""/>
+    <input type="hidden" name="targetlist" id="targetlist" value=""/>
+
+    <input type="button" name="add" onClick="javascript:menuaction('add')" value="Add"/>
+    <input type="button" name="copy" onClick="javascript:menuaction('copy')" value="Copy"/>
+    <input type="button" name="rename" onClick="javascript:menuaction('rename')" value="Rename"/>
+    <input type="button" name="delete" onClick="javascript:menuaction('delete')" value="Delete"/>
+    <br/>
+    <input type="button" name="netboot" onClick="javascript:menuaction('netboot')" value="Change Netboot"/>
+    <input type="button" name="profile" onClick="javascript:menuaction('profile')" value="Change Profile"/>
+    <input type="button" name="power" onClick="javascript:menuaction('power')" value="Power control"/>
+    <br/>
 
+    <table class="sortable">
     <thead>
         <caption>Cobbler Systems</caption>
         <tr>
+	    <th class="text"><input type="checkbox" id="itemsall" onclick="javascript:items_check_all();"></th>
             <th class="text">Name</th>
+            <th class="text">Netboot</th>
             <th class="text">Profile</th>
             <th class="text">Kickstart</th>
         </tr>
@@ -29,8 +115,21 @@
 
         <tr class="$tr_class">
             <td>
+		<input type="checkbox" name="items" value="${system.name}">
+            </td>
+
+            <td>
                 <a href="$base_url?mode=system_edit&name=${system.name}">${system.name}</a>
             </td>
+
+            <td>
+            #if str($system.netboot_enabled) != "False"
+                Yes
+            #else
+                No
+            #end if
+            </td>
+
             <td>
                 <a href="$base_url?mode=profile_edit&name=${system.profile}">${system.profile}</a>
             </td>
@@ -60,5 +159,13 @@
 
         #end for
     </tbody>
-</table>
+    </table>
+</form>
+<br/>
+
+    ## ==== BEGIN PAGE NAVIGATION ====
+    #set global what="system"
+    #include "/usr/share/cobbler/webui_templates/paginate.tmpl"
+    ## ==== END PAGE NAVIGATION ====
+
 #end block body
diff -burN old/webui_templates/system_netboot.tmpl build/webui_templates/system_netboot.tmpl
--- old/webui_templates/system_netboot.tmpl	1970-01-01 01:00:00.000000000 +0100
+++ build/webui_templates/system_netboot.tmpl	2008-11-25 19:45:25.000000000 +0100
@@ -0,0 +1,59 @@
+#extends cobbler.webui.master
+
+#block body
+
+<script language="Javascript">
+function submit_netboot(value)
+{
+    document.getElementById("netboot").value=value;
+    document.myform.submit();
+}
+</script>
+
+<form name="myform" method="post" action="$base_url?mode=system_netboot">
+    <input type="hidden" name="targetlist" id="targetlist" value="$targetlist"/>
+    <input type="hidden" name="netboot" id="netboot" value="0"/>
+
+    <table class="sortable">
+    <thead>
+        <caption>Change netboot of the following systems</caption>
+        <tr>
+            <th class="text">Name</th>
+            <th class="text">Current Netboot</th>
+        </tr>
+    </thead>
+    <tbody>
+        #set $evenodd = 1
+        #for $system in $systems
+        #if $evenodd % 2 == 0
+            #set $tr_class = "roweven"
+        #else
+            #set $tr_class = "rowodd"
+        #end if
+        #set $evenodd += 1
+
+        <tr class="$tr_class">
+            <td>
+                ${system.name}
+            </td>
+
+            <td>
+                #if str($system.netboot_enabled) != "False"
+                    Yes
+                #else
+                    No
+    	        #end if
+            </td>
+
+        </tr>
+        #end for
+    </tbody>
+    </table>
+
+    </p>
+
+    <input type="button" name="pxeenable" onclick="javascript:submit_netboot(1)" value="Enable Netboot"/>
+    <input type="button" name="pxedisable" onclick="javascript:submit_netboot(0)" value="Disable Netboot"/>
+    <input type="button" name="cancel" onclick="javascript:history.go(-1)" value="Cancel"/>
+</form>
+#end block body
diff -burN old/webui_templates/system_power.tmpl build/webui_templates/system_power.tmpl
--- old/webui_templates/system_power.tmpl	1970-01-01 01:00:00.000000000 +0100
+++ build/webui_templates/system_power.tmpl	2008-11-25 19:45:25.000000000 +0100
@@ -0,0 +1,66 @@
+#extends cobbler.webui.master
+
+#block body
+
+<script language="Javascript">
+function submit_power(value)
+{
+    document.getElementById("power").value=value;
+    document.myform.submit();
+}
+</script>
+
+<form name="myform" method="post" action="$base_url?mode=system_power">
+    <input type="hidden" name="targetlist" id="targetlist" value="$targetlist"/>
+    <input type="hidden" name="power" id="power" value=""/>
+
+    <table class="sortable">
+    <thead>
+        <caption>Control power of the following systems</caption>
+        <tr>
+            <th class="text">Name</th>
+            <th class="text">Power Type</th>
+            <th class="text">Power Address</th>
+        </tr>
+    </thead>
+    <tbody>
+        #set $evenodd = 1
+        #for $system in $systems
+        #if $evenodd % 2 == 0
+            #set $tr_class = "roweven"
+        #else
+            #set $tr_class = "rowodd"
+        #end if
+        #set $evenodd += 1
+
+        <tr class="$tr_class">
+            <td>
+                ${system.name}
+            </td>
+
+            <td>
+                #set valid_power = [ "none", "bullpap", "wti", "apc_snmp", "ether-wake", "ipmilan", "drac", "ipmitool", "ilo", "rsa", "lpar", "bladecenter" ]
+                #set nothing = valid_power.sort()
+                #for $value in $valid_power:
+                    #if $system and (($system.power_type == $value) or ($system.power_type == "" and $value == "none"))
+                            $value
+                    #end if
+                #end for
+            </td>
+
+            <td>
+                ${system.power_address}
+            </td>
+        </tr>
+        #end for
+    </tbody>
+    </table>
+
+    </p>
+
+    <input type="button" name="reboot" onclick="javascript:submit_power('reboot')" value="Reboot"/>
+    <input type="button" name="poweron" onclick="javascript:submit_power('on')" value="Power On"/>
+    <input type="button" name="poweroff" onclick="javascript:submit_power('off')" value="Power Off"/>
+    <input type="button" name="cancel" onclick="javascript:history.go(-1)" value="Cancel"/>
+</form>
+#end block body
diff -burN old/webui_templates/system_profile.tmpl build/webui_templates/system_profile.tmpl
--- old/webui_templates/system_profile.tmpl	1970-01-01 01:00:00.000000000 +0100
+++ build/webui_templates/system_profile.tmpl	2008-11-25 19:45:25.000000000 +0100
@@ -0,0 +1,63 @@
+#extends cobbler.webui.master
+
+#block body
+
+<script language="Javascript">
+function submit_netboot(value)
+{
+    document.getElementById("netboot").value=value;
+    document.myform.submit();
+}
+</script>
+
+<form name="myform" method="post" action="$base_url?mode=system_profile">
+    <input type="hidden" name="targetlist" id="targetlist" value="$targetlist"/>
+
+    <table class="sortable">
+    <thead>
+        <caption>Change profile of the following systems</caption>
+        <tr>
+            <th class="text">Name</th>
+            <th class="text">Current Profile</th>
+        </tr>
+    </thead>
+    <tbody>
+        #set $evenodd = 1
+        #for $system in $systems
+        #if $evenodd % 2 == 0
+            #set $tr_class = "roweven"
+        #else
+            #set $tr_class = "rowodd"
+        #end if
+        #set $evenodd += 1
+
+        <tr class="$tr_class">
+            <td>
+                ${system.name}
+            </td>
+
+            <td>
+                ${system.profile}
+            </td>
+
+        </tr>
+        #end for
+    </tbody>
+    </table>
+
+    <p>
+    <select name="profile" id="profile">
+        #for $profile in $profiles:
+        <option name="$profile.name"
+            #if $systems[0].profile == $profile.name
+                selected="1"
+            #end if
+        >$profile.name</option>
+        #end for
+    </select>
+    </p>
+
+    <input type="submit" name="change" value="Change profile"/>
+    <input type="button" name="cancel" onclick="javascript:history.go(-1)" value="Cancel"/>
+</form>
+#end block body
diff -burN old/webui_templates/system_rename.tmpl build/webui_templates/system_rename.tmpl
--- old/webui_templates/system_rename.tmpl	1970-01-01 01:00:00.000000000 +0100
+++ build/webui_templates/system_rename.tmpl	2008-11-25 19:45:25.000000000 +0100
@@ -0,0 +1,41 @@
+#extends cobbler.webui.master
+
+#block body
+
+<form name="myform" method="post" action="$base_url?mode=system_rename">
+    <input type="hidden" name="targetlist" id="targetlist" value="$targetlist"/>
+    
+    <table class="sortable">
+    <thead>
+        <caption>Rename the following system</caption>
+        <tr>
+            <th class="text">Name</th>
+        </tr>
+    </thead>
+    <tbody>
+        #set $evenodd = 1
+        #for $system in $systems
+        #if $evenodd % 2 == 0
+            #set $tr_class = "roweven"
+        #else
+            #set $tr_class = "rowodd"
+        #end if
+        #set $evenodd += 1
+
+        <tr class="$tr_class">
+            <td>
+                ${system.name}
+            </td>
+        </tr>
+        #end for
+    </tbody>
+    </table>
+
+    <p>
+    New name: <input type="text" size="128" style="width: 150px;" name="name" id="name" value=$systems[0].name>
+    </p>
+    
+    <input type="submit" name="rename" value="Rename System"/>
+    <input type="button" name="cancel" onclick="javascript:history.go(-1)" value="Cancel"/>
+</form>
+#end block body
