diff --git a/.gitignore b/.gitignore
index ed9cd99..a6fedb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,9 @@
 .tmp*
 .htaccess
 .settings/*
+*~
+*.orig
+git-create-branch-github.sh
+git-create-branch-origin.sh
+framework.config.php
+.project
diff --git a/features/cerberusweb.core/plugin.xml b/features/cerberusweb.core/plugin.xml
index d4f4893..c608eb2 100644
--- a/features/cerberusweb.core/plugin.xml
+++ b/features/cerberusweb.core/plugin.xml
@@ -156,6 +156,7 @@
 		<priv id="core.ticket.actions.assign" label="acl.core.ticket.actions.assign" />
 		<priv id="core.ticket.actions.close" label="acl.core.ticket.actions.close" />
 		<priv id="core.ticket.actions.delete" label="acl.core.ticket.actions.delete" />
+		<priv id="core.ticket.actions.take" label="acl.core.ticket.actions.take" />
 		<priv id="core.ticket.actions.move" label="acl.core.ticket.actions.move" />
 		<priv id="core.ticket.actions.spam" label="acl.core.ticket.actions.spam" />
 		<priv id="core.ticket.view.actions.bulk_update" label="acl.core.ticket.view.actions.bulk_update" />
diff --git a/features/cerberusweb.core/strings.xml b/features/cerberusweb.core/strings.xml
index 404648f..b106fee 100644
--- a/features/cerberusweb.core/strings.xml
+++ b/features/cerberusweb.core/strings.xml
@@ -483,6 +483,9 @@
 		<tu tuid='acl.core.ticket.actions.delete'>
 			<tuv xml:lang="en_US"><seg>[Tickets] Can delete tickets</seg></tuv>
 		</tu>
+		<tu tuid='acl.core.ticket.actions.take'>
+			<tuv xml:lang="en_US"><seg>[Tickets] Can take tickets</seg></tuv>
+		</tu>
 		<tu tuid='acl.core.ticket.actions.move'>
 			<tuv xml:lang="en_US"><seg>[Tickets] Can move tickets</seg></tuv>
 		</tu>
diff --git a/features/cerberusweb.core/templates/display/index.tpl b/features/cerberusweb.core/templates/display/index.tpl
index 4029acc..f1e661c 100644
--- a/features/cerberusweb.core/templates/display/index.tpl
+++ b/features/cerberusweb.core/templates/display/index.tpl
@@ -65,8 +65,10 @@
 				{if $active_worker->hasPriv('core.ticket.actions.delete')}<button title="{$translate->_('display.shortcut.delete')}" id="btnDelete" type="button" onclick="this.form.deleted.value=1;this.form.closed.value=1;this.form.submit();"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/delete.gif{/devblocks_url}" align="top"> {$translate->_('common.delete')|capitalize}</button>{/if}
 			{/if}
 			
-			{if empty($ticket->next_worker_id)}<button id="btnTake" title="{$translate->_('display.shortcut.take')}" type="button" onclick="this.form.next_worker_id.value='{$active_worker->id}';this.form.submit();"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/hand_paper.gif{/devblocks_url}" align="top"> {$translate->_('mail.take')|capitalize}</button>{/if}
-			{if $ticket->next_worker_id == $active_worker->id}<button id="btnSurrender" title="{$translate->_('display.shortcut.surrender')}" type="button" onclick="this.form.next_worker_id.value='0';this.form.unlock_date.value='0';this.form.submit();"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/flag_white.gif{/devblocks_url}" align="top"> {$translate->_('mail.surrender')|capitalize}</button>{/if}
+			{if $active_worker->hasPriv('core.ticket.actions.take')}
+				{if empty($ticket->next_worker_id)}<button id="btnTake" title="{$translate->_('display.shortcut.take')}" type="button" onclick="this.form.next_worker_id.value='{$active_worker->id}';this.form.submit();"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/hand_paper.gif{/devblocks_url}" align="top"> {$translate->_('mail.take')|capitalize}</button>{/if}
+				{if $ticket->next_worker_id == $active_worker->id}<button id="btnSurrender" title="{$translate->_('display.shortcut.surrender')}" type="button" onclick="this.form.next_worker_id.value='0';this.form.unlock_date.value='0';this.form.submit();"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/flag_white.gif{/devblocks_url}" align="top"> {$translate->_('mail.surrender')|capitalize}</button>{/if}
+			{/if}
 			
 			{if !$expand_all}<button id="btnReadAll" title="{$translate->_('display.shortcut.read_all')}" type="button" onclick="document.location='{devblocks_url}c=display&id={$ticket->mask}&tab=conversation&opt=read_all{/devblocks_url}';"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/document.gif{/devblocks_url}" align="top"> {$translate->_('display.button.read_all')|capitalize}</button>{/if} 
 			 
@@ -111,8 +113,8 @@
 			{if !$ticket->is_closed && $active_worker->hasPriv('core.ticket.actions.close')}(<b>c</b>) {$translate->_('common.close')|lower} {/if}
 			{if !$ticket->spam_trained && $active_worker->hasPriv('core.ticket.actions.spam')}(<b>s</b>) {$translate->_('common.spam')|lower} {/if}
 			{if !$ticket->is_deleted && $active_worker->hasPriv('core.ticket.actions.delete')}(<b>x</b>) {$translate->_('common.delete')|lower} {/if}
-			{if empty($ticket->next_worker_id)}(<b>t</b>) {$translate->_('mail.take')|lower} {/if}
-			{if $ticket->next_worker_id == $active_worker->id}(<b>u</b>) {$translate->_('mail.surrender')|lower} {/if}
+			{if $active_worker->hasPriv('core.ticket.actions.take')}{if empty($ticket->next_worker_id)}(<b>t</b>) {$translate->_('mail.take')|lower} {/if}{/if}
+			{if $active_worker->hasPriv('core.ticket.actions.take')}{if $ticket->next_worker_id == $active_worker->id}(<b>u</b>) {$translate->_('mail.surrender')|lower} {/if}{/if}
 			{if !$expand_all}(<b>a</b>) {$translate->_('display.button.read_all')|lower} {/if} 
 			{if !empty($series_stats.prev)}( <b>[</b> ) {$translate->_('common.previous')|lower} {/if} 
 			{if !empty($series_stats.next)}( <b>]</b> ) {$translate->_('common.next')|lower} {/if} 
@@ -242,14 +244,18 @@ CreateKeyHandler(function doShortcuts(e) {
 			} catch(ex){}
 			break;
 		case 84:  // (T) take/assign
-			try {
-				document.getElementById('btnTake').click();
-			} catch(ex){}
+			{if $active_worker->hasPriv('core.ticket.actions.take')}
+				try {
+					document.getElementById('btnTake').click();
+				} catch(ex){}
+			{/if}
 			break;
 		case 85:  // (U) surrender/unassign
-			try {
-				document.getElementById('btnSurrender').click();
-			} catch(ex){}
+			{if $active_worker->hasPriv('core.ticket.actions.take')}
+				try {
+					document.getElementById('btnSurrender').click();
+				} catch(ex){}
+			{/if}
 			break;
 		case 88:  // (X) delete
 			try {
diff --git a/features/cerberusweb.core/templates/display/modules/properties/index.tpl b/features/cerberusweb.core/templates/display/modules/properties/index.tpl
index 5df84a7..0ea6a1e 100644
--- a/features/cerberusweb.core/templates/display/modules/properties/index.tpl
+++ b/features/cerberusweb.core/templates/display/modules/properties/index.tpl
@@ -24,6 +24,7 @@
 	<br>
 	</div>
 	
+	{if $active_worker->hasPriv('core.ticket.actions.take')}
 	<b>{$translate->_('display.reply.next.handle_reply')}</b><br> 
 	<select name="next_worker_id" onchange="toggleDiv('ticketPropsUnlockDate',this.selectedIndex?'block':'none');">
 		{if $active_worker->id==$ticket->next_worker_id || 0==$ticket->next_worker_id || $active_worker->hasPriv('core.ticket.actions.assign')}<option value="0" {if 0==$ticket->next_worker_id}selected{/if}>{$translate->_('common.anybody')|capitalize}{/if}
@@ -48,6 +49,7 @@
 		<br>
 		<br>
 	</div>
+	{/if}
 </blockquote>
 
 {* [TODO] Display by Group *}
diff --git a/features/cerberusweb.core/templates/display/rpc/reply.tpl b/features/cerberusweb.core/templates/display/rpc/reply.tpl
index 4d0058e..49628b4 100644
--- a/features/cerberusweb.core/templates/display/rpc/reply.tpl
+++ b/features/cerberusweb.core/templates/display/rpc/reply.tpl
@@ -186,6 +186,7 @@
 						      	</div>
 		
 								<div style="margin-left:10px;">
+								{if $active_worker->hasPriv('core.ticket.actions.take')}
 								<b>{$translate->_('display.reply.next.handle_reply')}</b><br>
 						      	<select name="next_worker_id" onchange="toggleDiv('replySurrender{$message->id}',this.selectedIndex?'block':'none');">
 						      		{if $active_worker->id==$ticket->next_worker_id || 0==$ticket->next_worker_id || $active_worker->hasPriv('core.ticket.actions.assign')}<option value="0" {if 0==$ticket->next_worker_id}selected{/if}>{$translate->_('common.anybody')|capitalize}{/if}
@@ -210,6 +211,7 @@
 							      	<br>
 							      	<br>
 							    </div>
+								{/if}
 		
 								{if $active_worker->hasPriv('core.ticket.actions.move')}
 								<b>{$translate->_('display.reply.next.move')}</b><br>  
@@ -256,7 +258,9 @@
 				<button type="button" onclick="this.form.cc.value=document.getElementById('replyForm_cc').value;this.form.bcc.value=document.getElementById('replyForm_bcc').value;this.form.subject.value=document.getElementById('replyForm_subject').value;this.form.submit();"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/check.gif{/devblocks_url}" align="top"> {$translate->_('display.ui.send_message')}</button>
 			{/if}
 			<button type="button" onclick="clearDiv('reply{$message->id}');"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/delete.gif{/devblocks_url}" align="top"> {$translate->_('display.ui.discard')|capitalize}</button>
-			<button type="button" onclick="clearDiv('reply{$message->id}');genericAjaxGet('','c=display&a=discardAndSurrender&ticket_id={$ticket->id}');"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/flag_white.gif{/devblocks_url}" align="top"> {$translate->_('display.ui.discard_surrender')}</button>
+			{if $active_worker->hasPriv('core.ticket.actions.take')}
+				<button type="button" onclick="clearDiv('reply{$message->id}');genericAjaxGet('','c=display&a=discardAndSurrender&ticket_id={$ticket->id}');"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/flag_white.gif{/devblocks_url}" align="top"> {$translate->_('display.ui.discard_surrender')}</button>
+			{/if}
 		</td>
 	</tr>
 </table>
diff --git a/features/cerberusweb.core/templates/tickets/compose/index.tpl b/features/cerberusweb.core/templates/tickets/compose/index.tpl
index c624175..82f244e 100644
--- a/features/cerberusweb.core/templates/tickets/compose/index.tpl
+++ b/features/cerberusweb.core/templates/tickets/compose/index.tpl
@@ -131,6 +131,7 @@
 								<br>
 								</div>
 		
+								{if $active_worker->hasPriv('core.ticket.actions.take')}
 								<b>{$translate->_('display.reply.next.handle_reply')}</b><br>
 						      	<select name="next_worker_id" onchange="toggleDiv('replySurrender{$message->id}',this.selectedIndex?'block':'none');">
 						      		<option value="0" selected="selected">{$translate->_('common.anybody')|capitalize}
@@ -155,6 +156,7 @@
 							      	<br>
 							      	<br>
 							    </div>
+								{/if}
 		
 								{if $active_worker->hasPriv('core.ticket.actions.move')}
 								<b>{$translate->_('display.reply.next.move')}</b><br>  
diff --git a/features/cerberusweb.core/templates/tickets/compose/peek.tpl b/features/cerberusweb.core/templates/tickets/compose/peek.tpl
index c9a7dc4..9ce338e 100644
--- a/features/cerberusweb.core/templates/tickets/compose/peek.tpl
+++ b/features/cerberusweb.core/templates/tickets/compose/peek.tpl
@@ -63,22 +63,24 @@
 			<br>
 			<br>
 
-			<b>Who should handle the follow-up?</b><br>
-	      	<select name="next_worker_id">
-	      		<option value="0" {if 0==$default_next_worker_id}selected="selected"{/if}>Anybody
-	      		{foreach from=$workers item=worker key=worker_id name=workers}
-					{if $worker_id==$active_worker->id || $active_worker->hasPriv('core.ticket.actions.assign')}
-		      			{if $worker_id==$active_worker->id}{assign var=next_worker_id_sel value=$smarty.foreach.workers.iteration}{/if}
-		      			<option value="{$worker_id}" {if $worker_id==$default_next_worker_id}selected="selected"{/if}>{$worker->getName()}
-					{/if}
-	      		{/foreach}
-	      	</select>&nbsp;
-	      	{if $active_worker->hasPriv('core.ticket.actions.assign') && !empty($next_worker_id_sel)}
-	      		<button type="button" onclick="this.form.next_worker_id.selectedIndex = {$next_worker_id_sel};">me</button>
-	      		<button type="button" onclick="this.form.next_worker_id.selectedIndex = 0;">anybody</button>
-	      	{/if}
-	      	<br>
-	      	<br>			
+			{if $active_worker->hasPriv('core.ticket.actions.take')}
+				<b>Who should handle the follow-up?</b><br>
+				<select name="next_worker_id">
+					<option value="0" {if 0==$default_next_worker_id}selected="selected"{/if}>Anybody
+					{foreach from=$workers item=worker key=worker_id name=workers}
+						{if $worker_id==$active_worker->id || $active_worker->hasPriv('core.ticket.actions.assign')}
+							{if $worker_id==$active_worker->id}{assign var=next_worker_id_sel value=$smarty.foreach.workers.iteration}{/if}
+							<option value="{$worker_id}" {if $worker_id==$default_next_worker_id}selected="selected"{/if}>{$worker->getName()}
+						{/if}
+					{/foreach}
+				</select>&nbsp;
+				{if $active_worker->hasPriv('core.ticket.actions.assign') && !empty($next_worker_id_sel)}
+					<button type="button" onclick="this.form.next_worker_id.selectedIndex = {$next_worker_id_sel};">me</button>
+					<button type="button" onclick="this.form.next_worker_id.selectedIndex = 0;">anybody</button>
+				{/if}
+				<br>
+				<br>			
+			{/if}
 		</td>
 	</tr>
 </table>
diff --git a/features/cerberusweb.core/templates/tickets/create/index.tpl b/features/cerberusweb.core/templates/tickets/create/index.tpl
index 0f0f8b7..013fca5 100644
--- a/features/cerberusweb.core/templates/tickets/create/index.tpl
+++ b/features/cerberusweb.core/templates/tickets/create/index.tpl
@@ -119,30 +119,32 @@
 								<br>
 								</div>
 		
-								<b>{$translate->_('display.reply.next.handle_reply')}</b><br>
-						      	<select name="next_worker_id" onchange="toggleDiv('replySurrender{$message->id}',this.selectedIndex?'block':'none');">
-						      		<option value="0" selected="selected">{$translate->_('common.anybody')|capitalize}
-						      		{foreach from=$workers item=worker key=worker_id name=workers}
-										{if $worker_id==$active_worker->id || $active_worker->hasPriv('core.ticket.actions.assign')}
-							      			{if $worker_id==$active_worker->id}{assign var=next_worker_id_sel value=$smarty.foreach.workers.iteration}{/if}
-							      			<option value="{$worker_id}">{$worker->getName()}
-										{/if}
-						      		{/foreach}
-						      	</select>&nbsp;
-						      	{if $active_worker->hasPriv('core.ticket.actions.assign') && !empty($next_worker_id_sel)}
-						      		<button type="button" onclick="this.form.next_worker_id.selectedIndex = {$next_worker_id_sel};toggleDiv('replySurrender{$message->id}','block');">{$translate->_('common.me')|lower}</button>
-						      		<button type="button" onclick="this.form.next_worker_id.selectedIndex = 0;toggleDiv('replySurrender{$message->id}','none');">{$translate->_('common.anybody')|lower}</button>
-						      	{/if}
-						      	<br>
-						      	<br>
-						      	
-						      	<div id="replySurrender{$message->id}" style="display:none;margin-left:10px;">
+								{if $active_worker->hasPriv('core.ticket.actions.take')}
+									<b>{$translate->_('display.reply.next.handle_reply')}</b><br>
+									<select name="next_worker_id" onchange="toggleDiv('replySurrender{$message->id}',this.selectedIndex?'block':'none');">
+										<option value="0" selected="selected">{$translate->_('common.anybody')|capitalize}
+										{foreach from=$workers item=worker key=worker_id name=workers}
+											{if $worker_id==$active_worker->id || $active_worker->hasPriv('core.ticket.actions.assign')}
+												{if $worker_id==$active_worker->id}{assign var=next_worker_id_sel value=$smarty.foreach.workers.iteration}{/if}
+												<option value="{$worker_id}">{$worker->getName()}
+											{/if}
+										{/foreach}
+									</select>&nbsp;
+									{if $active_worker->hasPriv('core.ticket.actions.assign') && !empty($next_worker_id_sel)}
+										<button type="button" onclick="this.form.next_worker_id.selectedIndex = {$next_worker_id_sel};toggleDiv('replySurrender{$message->id}','block');">{$translate->_('common.me')|lower}</button>
+										<button type="button" onclick="this.form.next_worker_id.selectedIndex = 0;toggleDiv('replySurrender{$message->id}','none');">{$translate->_('common.anybody')|lower}</button>
+									{/if}
+									<br>
+									<br>
+								{/if}
+									
+									<div id="replySurrender{$message->id}" style="display:none;margin-left:10px;">
 									<b>{$translate->_('display.reply.next.handle_reply_after')}</b> {$translate->_('display.reply.next.handle_reply_after_eg')}<br>  
-							      	<input type="text" name="unlock_date" size="32" maxlength="255" value="">
-							      	<button type="button" onclick="this.form.unlock_date.value='+2 hours';">{$translate->_('display.reply.next.handle_reply_after_2hrs')}</button>
-							      	<br>
-							      	<br>
-							    </div>
+										<input type="text" name="unlock_date" size="32" maxlength="255" value="">
+										<button type="button" onclick="this.form.unlock_date.value='+2 hours';">{$translate->_('display.reply.next.handle_reply_after_2hrs')}</button>
+										<br>
+										<br>
+									</div>
 		
 								{if $active_worker->hasPriv('core.ticket.actions.move')}
 								<b>{$translate->_('display.reply.next.move')}</b><br>  
diff --git a/features/cerberusweb.core/templates/tickets/rpc/batch_panel.tpl b/features/cerberusweb.core/templates/tickets/rpc/batch_panel.tpl
index 401226c..f998f75 100644
--- a/features/cerberusweb.core/templates/tickets/rpc/batch_panel.tpl
+++ b/features/cerberusweb.core/templates/tickets/rpc/batch_panel.tpl
@@ -94,7 +94,7 @@
 	</tr>
 	{/if}
 	
-	{if $active_worker->hasPriv('core.ticket.actions.assign')}
+	{if $active_worker->hasPriv('core.ticket.actions.assign') && $active_worker->hasPriv('core.ticket.actions.take')}
 	<tr>
 		<td width="0%" nowrap="nowrap">Next Worker:</td>
 		<td width="100%">
diff --git a/features/cerberusweb.core/templates/tickets/rpc/preview_panel.tpl b/features/cerberusweb.core/templates/tickets/rpc/preview_panel.tpl
index 0f4fcef..e02d4d4 100644
--- a/features/cerberusweb.core/templates/tickets/rpc/preview_panel.tpl
+++ b/features/cerberusweb.core/templates/tickets/rpc/preview_panel.tpl
@@ -43,24 +43,26 @@
 						<input type="text" name="subject" size="45" maxlength="255" value="{$ticket->subject|escape}">
 					</td>
 				</tr>
-				<tr>
-					<td width="0%" nowrap="nowrap" align="right">Next Worker: </td>
-					<td width="100%">
-						<select name="next_worker_id">
-							{if $active_worker->id==$ticket->next_worker_id || 0==$ticket->next_worker_id || $active_worker->hasPriv('core.ticket.actions.assign')}<option value="0" {if 0==$ticket->next_worker_id}selected{/if}>Anybody{/if}
-							{foreach from=$workers item=worker key=worker_id name=workers}
-								{if $worker_id==$ticket->next_worker_id || $active_worker->hasPriv('core.ticket.actions.assign')}
-								{if $worker_id==$active_worker->id}{assign var=next_worker_id_sel value=$smarty.foreach.workers.iteration}{/if}
-								<option value="{$worker_id}" {if $worker_id==$ticket->next_worker_id}selected{/if}>{$worker->getName()}
-								{/if}
-							{/foreach}
-						</select>
-					   	{if $active_worker->hasPriv('core.ticket.actions.assign') && !empty($next_worker_id_sel)}
-					   		<button type="button" onclick="this.form.next_worker_id.selectedIndex = {$next_worker_id_sel};toggleDiv('ticketPropsUnlockDate','block');">{$translate->_('common.me')|lower}</button>
-					   		<button type="button" onclick="this.form.next_worker_id.selectedIndex = 0;toggleDiv('ticketPropsUnlockDate','none');">{$translate->_('common.anybody')|lower}</button>
-					   	{/if}
-					</td>
-				</tr>
+				{if $active_worker->hasPriv('core.ticket.actions.take')}
+					<tr>
+						<td width="0%" nowrap="nowrap" align="right">Next Worker: </td>
+						<td width="100%">
+							<select name="next_worker_id">
+								{if $active_worker->id==$ticket->next_worker_id || 0==$ticket->next_worker_id || $active_worker->hasPriv('core.ticket.actions.assign')}<option value="0" {if 0==$ticket->next_worker_id}selected{/if}>Anybody{/if}
+								{foreach from=$workers item=worker key=worker_id name=workers}
+									{if $worker_id==$ticket->next_worker_id || $active_worker->hasPriv('core.ticket.actions.assign')}
+									{if $worker_id==$active_worker->id}{assign var=next_worker_id_sel value=$smarty.foreach.workers.iteration}{/if}
+									<option value="{$worker_id}" {if $worker_id==$ticket->next_worker_id}selected{/if}>{$worker->getName()}
+									{/if}
+								{/foreach}
+							</select>
+							{if $active_worker->hasPriv('core.ticket.actions.assign') && !empty($next_worker_id_sel)}
+								<button type="button" onclick="this.form.next_worker_id.selectedIndex = {$next_worker_id_sel};toggleDiv('ticketPropsUnlockDate','block');">{$translate->_('common.me')|lower}</button>
+								<button type="button" onclick="this.form.next_worker_id.selectedIndex = 0;toggleDiv('ticketPropsUnlockDate','none');">{$translate->_('common.anybody')|lower}</button>
+							{/if}
+						</td>
+					</tr>
+				{/if}
 				
 				{if $active_worker->hasPriv('core.ticket.actions.move')}
 				<tr>
diff --git a/features/cerberusweb.core/templates/tickets/rpc/ticket_view_assist.tpl b/features/cerberusweb.core/templates/tickets/rpc/ticket_view_assist.tpl
index 538b60d..fbcb304 100644
--- a/features/cerberusweb.core/templates/tickets/rpc/ticket_view_assist.tpl
+++ b/features/cerberusweb.core/templates/tickets/rpc/ticket_view_assist.tpl
@@ -47,11 +47,13 @@ Sort biggest piles by:
 				{if $active_worker->hasPriv('core.ticket.actions.spam')}<option value="as">Report Spam</option>{/if}
 				{if $active_worker->hasPriv('core.ticket.actions.delete')}<option value="ad">Delete</option>{/if}
 			</optgroup>
-			<optgroup label="Assign" style="font-weight:bold;">
-				{foreach from=$workers item=worker key=worker_id}
-					<option value="w{$worker_id}">{$worker->getName()}</option>
-				{/foreach}
-			</optgroup>
+			{if $active_worker->hasPriv('core.ticket.actions.assign') && $active_worker->hasPriv('core.ticket.actions.take')}
+				<optgroup label="Assign" style="font-weight:bold;">
+					{foreach from=$workers item=worker key=worker_id}
+						<option value="w{$worker_id}">{$worker->getName()}</option>
+					{/foreach}
+				</optgroup>
+			{/if}
 		</select>
 		{if $active_worker->hasPriv('core.ticket.actions.close')}<a href="javascript:;" onclick="document.getElementById('viewAssist{$view_id}').select{$hash}.value='ac';"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/folder_ok.gif{/devblocks_url}" align="top" border="0"></a>{/if}
 		{if $active_worker->hasPriv('core.ticket.actions.spam')}<a href="javascript:;" onclick="document.getElementById('viewAssist{$view_id}').select{$hash}.value='as';"><img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/spam.gif{/devblocks_url}" align="top" border="0"></a>{/if}
diff --git a/features/cerberusweb.core/templates/tickets/ticket_view.tpl b/features/cerberusweb.core/templates/tickets/ticket_view.tpl
index 5e86d11..6957483 100644
--- a/features/cerberusweb.core/templates/tickets/ticket_view.tpl
+++ b/features/cerberusweb.core/templates/tickets/ticket_view.tpl
@@ -223,8 +223,10 @@
 			<div id="view{$view->id}_more" style="display:{if $show_more}none{else}block{/if};padding-top:5px;padding-bottom:5px;">
 				<button type="button" onclick="ajax.viewTicketsAction('{$view->id}','not_spam');">{$translate->_('common.notspam')|lower}</button>
 				{if $active_worker->hasPriv('core.ticket.view.actions.merge')}<button type="button" onclick="ajax.viewTicketsAction('{$view->id}','merge');">{$translate->_('mail.merge')|lower}</button>{/if}
-				<button type="button" id="btn{$view->id}Take" onclick="ajax.viewTicketsAction('{$view->id}','take');">{$translate->_('mail.take')|lower}</button>
-				<button type="button" id="btn{$view->id}Surrender" onclick="ajax.viewTicketsAction('{$view->id}','surrender');">{$translate->_('mail.surrender')|lower}</button>
+				{if $active_worker->hasPriv('core.ticket.actions.take')}
+					<button type="button" id="btn{$view->id}Take" onclick="ajax.viewTicketsAction('{$view->id}','take');">{$translate->_('mail.take')|lower}</button>
+					<button type="button" id="btn{$view->id}Surrender" onclick="ajax.viewTicketsAction('{$view->id}','surrender');">{$translate->_('mail.surrender')|lower}</button>
+				{/if}
 				<button type="button" onclick="ajax.viewTicketsAction('{$view->id}','waiting');">{$translate->_('mail.waiting')|lower}</button>
 				<button type="button" onclick="ajax.viewTicketsAction('{$view->id}','not_waiting');">{$translate->_('mail.not_waiting')|lower}</button>
 			</div>
@@ -235,8 +237,8 @@
 					{if $active_worker->hasPriv('core.ticket.view.actions.bulk_update')}(<b>b</b>) {$translate->_('common.bulk_update')|lower}{/if} 
 					{if $active_worker->hasPriv('core.ticket.actions.close')}(<b>c</b>) {$translate->_('common.close')|lower}{/if} 
 					{if $active_worker->hasPriv('core.ticket.actions.spam')}(<b>s</b>) {$translate->_('common.spam')|lower}{/if} 
-					(<b>t</b>) {$translate->_('mail.take')|lower} 
-					(<b>u</b>) {$translate->_('mail.surrender')|lower} 
+					{if $active_worker->hasPriv('core.ticket.actions.take')}(<b>t</b>) {$translate->_('mail.take')|lower}{/if}
+					{if $active_worker->hasPriv('core.ticket.actions.take')}(<b>u</b>) {$translate->_('mail.surrender')|lower}{/if}
 					{if $active_worker->hasPriv('core.ticket.actions.delete')}(<b>x</b>) {$translate->_('common.delete')|lower}{/if}
 					<br>
 			{/if}

