diff --git a/application/classes/auth/osb.php b/application/classes/auth/osb.php
index b525f288..9666e01b 100644
--- a/application/classes/auth/osb.php
+++ b/application/classes/auth/osb.php
@@ -155,37 +155,38 @@ class Auth_OSB extends Auth_ORM {
 		$mmto = ORM::factory('module_method_token',array('token'=>$token));
 		$user = FALSE;
 
+		// Ignore the token if it doesnt exist.
 		if ($mmto->loaded()) {
-			if (! is_null($mmto->date_expire) AND $mmto->date_expire < time()) {
-				SystemMessage::add(array(
-					'title'=>_('Token Not Valid'),
-					'type'=>'warning',
-					'body'=>_('Token expired')));
+			// Check that the token is for this URI
+			$mo = ORM::factory('module',array('name'=>Request::current()->controller()));
+			$mmo = ORM::factory('module_method',array(
+				'module_id'=>$mo->id,
+				'name'=>Request::current()->directory() ? sprintf('%s_%s',Request::current()->directory(),Request::current()->action()) : Request::current()->action()
+			));
 
-				// @todo Log the token deletion
-				Session::instance()->delete('token');
-				$mmto->delete();
+			// Ignore the token if this is not the right method.
+			if ($mmo->id == $mmto->method_id) {
+				if (! is_null($mmto->date_expire) AND $mmto->date_expire < time()) {
+					SystemMessage::add(array(
+						'title'=>_('Token Not Valid'),
+						'type'=>'warning',
+						'body'=>_('Token expired')));
 
-			} elseif (! is_null($mmto->uses) AND $mmto->uses < 1) {
-				SystemMessage::add(array(
-					'title'=>_('Token Not Valid'),
-					'type'=>'warning',
-					'body'=>_('Token expired')));
+					// @todo Log the token deletion
+					Session::instance()->delete('token');
+					$mmto->delete();
 
-				// @todo Log the token deletion
-				Session::instance()->delete('token');
-				$mmto->delete();
+				} elseif (! is_null($mmto->uses) AND $mmto->uses < 1) {
+					SystemMessage::add(array(
+						'title'=>_('Token Not Valid'),
+						'type'=>'warning',
+						'body'=>_('Token expired')));
 
-			} else {
-				// Check that the token is for this URI
-				$mo = ORM::factory('module',array('name'=>Request::current()->controller()));
-				$mmo = ORM::factory('module_method',array(
-					'module_id'=>$mo->id,
-					'name'=>Request::current()->directory() ? sprintf('%s_%s',Request::current()->directory(),Request::current()->action()) : Request::current()->action()
-				));
+					// @todo Log the token deletion
+					Session::instance()->delete('token');
+					$mmto->delete();
 
-				// Ignore the token if this is not the right method.
-				if ($mmo->id == $mmto->method_id) {
+				} else {
 					// If this is a usage count token, reduce the count.
 					if (! is_null($mmto->uses))
 						$mmto->uses -= 1;
diff --git a/application/classes/controller/admin/welcome.php b/application/classes/controller/admin/welcome.php
index 4d418292..cc0d747e 100644
--- a/application/classes/controller/admin/welcome.php
+++ b/application/classes/controller/admin/welcome.php
@@ -30,6 +30,7 @@ class Controller_Admin_Welcome extends Controller_TemplateDefault {
 				25,
 				array(
 					'due_date'=>array('label'=>'Due Date'),
+					'account->accnum()'=>array('label'=>'Num'),
 					'account->name()'=>array('label'=>'Account'),
 					'account->display("status")'=>array('label'=>'Active'),
 					'id'=>array('label'=>'ID','url'=>'user/invoice/view/'),
@@ -48,6 +49,7 @@ class Controller_Admin_Welcome extends Controller_TemplateDefault {
 				25,
 				array(
 					'due_date'=>array('label'=>'Due Date'),
+					'account->accnum()'=>array('label'=>'Num'),
 					'account->name()'=>array('label'=>'Account'),
 					'account->display("status")'=>array('label'=>'Active'),
 					'id'=>array('label'=>'ID','url'=>'user/invoice/view/'),
@@ -66,6 +68,7 @@ class Controller_Admin_Welcome extends Controller_TemplateDefault {
 				25,
 				array(
 					'due_date'=>array('label'=>'Due Date'),
+					'account->accnum()'=>array('label'=>'Num'),
 					'account->name()'=>array('label'),
 					'account->display("status")'=>array('label'=>'Active'),
 					'id'=>array('label'=>'ID','url'=>'user/invoice/view/'),
@@ -85,6 +88,7 @@ class Controller_Admin_Welcome extends Controller_TemplateDefault {
 				25,
 				array(
 					'date_payment'=>array('label'=>'Pay Date'),
+					'account->accnum()'=>array('label'=>'Num'),
 					'account->name()'=>array('label'=>'Account'),
 					'account->display("status")'=>array('label'=>'Active'),
 					'id'=>array('label'=>'ID','url'=>'user/payment/view/'),
diff --git a/application/classes/controller/lnapp/login.php b/application/classes/controller/lnapp/login.php
index d91cfc53..aa87f1cf 100644
--- a/application/classes/controller/lnapp/login.php
+++ b/application/classes/controller/lnapp/login.php
@@ -135,6 +135,7 @@ class Controller_lnApp_Login extends Controller_TemplateDefault {
 				$mmto = ORM::factory('module_method_token')
 					->method(array('account','user_resetpassword'))
 					->account($ao)
+					->uses(2)
 					->expire(time()+$token_expire*60);
 
 				if ($mmto->generate()) {
diff --git a/application/classes/controller/user/account.php b/application/classes/controller/user/account.php
index 6db2be58..5b18ffbb 100644
--- a/application/classes/controller/user/account.php
+++ b/application/classes/controller/user/account.php
@@ -54,12 +54,6 @@ class Controller_User_Account extends Controller_TemplateDefault_User {
 					'body'=>_('Your updates didnt pass validation.').'<br/>'.$output,
 				));
 			}
-		else
-			SystemMessage::add(array(
-				'title'=>_('Record NOT updated'),
-				'type'=>'info',
-				'body'=>_('Your account has NOT been updated.')
-			));
 
 		Block::add(array(
 			'title'=>_('Password Reset'),
diff --git a/application/classes/lnapp/config.php b/application/classes/lnapp/config.php
index f9b23b2c..e91d7bff 100644
--- a/application/classes/lnapp/config.php
+++ b/application/classes/lnapp/config.php
@@ -74,7 +74,7 @@ abstract class lnApp_Config extends Kohana_Config {
 
 	public static function logo_uri() {
 		list ($path,$suffix) = explode('.',static::$logo);
-		return Route::get('default/media')->uri(array('file'=>$path.'.'.$suffix),array('alt'=>static::sitename()));
+		return URL::site(Route::get('default/media')->uri(array('file'=>$path.'.'.$suffix),array('alt'=>static::sitename())),'http');
 	}
 
 	public static function logo() {
diff --git a/application/classes/model/auth/userdefault.php b/application/classes/model/auth/userdefault.php
index 50944557..a5e6ee26 100644
--- a/application/classes/model/auth/userdefault.php
+++ b/application/classes/model/auth/userdefault.php
@@ -63,7 +63,7 @@ class Model_Auth_UserDefault extends Model_Auth_User {
 	 * Test to see if a record has been changed
 	 */
 	public function changed() {
-		return ! (empty($this->_changed));
+		return (count($this->_changed));
 	}
 
 	/**
diff --git a/modules/invoice/classes/controller/admin/invoice.php b/modules/invoice/classes/controller/admin/invoice.php
index e1342772..67b1abcf 100644
--- a/modules/invoice/classes/controller/admin/invoice.php
+++ b/modules/invoice/classes/controller/admin/invoice.php
@@ -27,9 +27,9 @@ class Controller_Admin_Invoice extends Controller_TemplateDefault_Admin {
 				array(
 					'id'=>array('label'=>'ID','url'=>'user/invoice/view/'),
 					'date_orig'=>array('label'=>'Date'),
-					'total_amt'=>array('label'=>'Total','class'=>'right'),
+					'total(TRUE)'=>array('label'=>'Total','class'=>'right'),
 					'credit_amt'=>array('label'=>'Credits','class'=>'right'),
-					'billed_amt'=>array('label'=>'Payments','class'=>'right'),
+					'payments_total(TRUE)'=>array('label'=>'Payments','class'=>'right'),
 					'due(TRUE)'=>array('label'=>'Still Due','class'=>'right'),
 					'account->accnum()'=>array('label'=>'Cust ID'),
 					'account->name()'=>array('label'=>'Customer'),
diff --git a/modules/invoice/classes/controller/task/invoice.php b/modules/invoice/classes/controller/task/invoice.php
index 03138772..3ff0e68c 100644
--- a/modules/invoice/classes/controller/task/invoice.php
+++ b/modules/invoice/classes/controller/task/invoice.php
@@ -60,10 +60,10 @@ class Controller_Task_Invoice extends Controller_Task {
 		$action = array();
 		// @todo This should go in a config somewhere
 		$days = 5;
-		$io = ORM::factory('invoice');
+		$i = ORM::factory('invoice');
 		$key = 'remind_due';
 
-		foreach ($io->list_due(time()+86400*$days) as $io) {
+		foreach ($i->list_due(time()+86400*$days) as $io) {
 			// If we have already sent a reminder, we'll skip to the next one.
 			if ($io->remind($key) AND (is_null($x=$this->request->param('id')) OR $x != 'again'))
 				continue;
@@ -96,7 +96,7 @@ class Controller_Task_Invoice extends Controller_Task {
 	 */
 	public function action_remind_overdue() {
 		$action = array();
-		$io = ORM::factory('invoice');
+		$i = ORM::factory('invoice');
 		$notice = $this->request->param('id');
 		$x = NULL;
 
@@ -125,9 +125,8 @@ class Controller_Task_Invoice extends Controller_Task {
 		}
 
 		$key = 'remind_overdue_'.$notice;
-		$template = 'task_invoice_'.$key;
 
-		foreach ($io->list_overdue_billing(time()-86400*$days,FALSE) as $io) {
+		foreach ($i->list_overdue_billing(time()-86400*$days,FALSE) as $io) {
 			// If we have already sent a reminder, we'll skip to the next one.
 			if ($io->remind($key) AND (is_null($x) OR $x != 'again'))
 				continue;
@@ -230,6 +229,56 @@ class Controller_Task_Invoice extends Controller_Task {
 		$this->response->body(_('Services Invoiced: ').join('|',$action));
 	}
 
+	public function action_invoice_send() {
+		$action = array();
+		$iid = $this->request->param('id');
+		$x = NULL;
+
+		if (preg_match('/:/',$iid))
+			list($iid,$x) = explode(':',$iid);
+
+		// @todo The parameter for email should be a system CONSTANT?
+		$i = $iid ? ORM::factory('invoice')->where('id','=',$iid) : ORM::factory('invoice')->tosend(1);
+
+		$key = 'send';
+
+		foreach ($i->find_all() as $io) {
+			// If we have already sent a reminder, we'll skip to the next one.
+			if ($io->remind($key) AND (is_null($x) OR $x != 'again'))
+				continue;
+
+			// Send our email
+			$et = Email_Template::instance('task_invoice_'.$key);
+			$token = ORM::factory('module_method_token')
+				->method(array('invoice','user_download'))
+				->account($io->account)
+				->expire(time()+86400*21)
+				->uses(3)
+				->generate();
+
+			$et->to = array('account'=>array($io->account_id));
+			$et->variables = array(
+				'DUE'=>$io->due(TRUE),
+				'DUE_DATE'=>$io->display('due_date'),
+				'EMAIL'=>'accounts@graytech.net.au',	// @todo This should come from a config.
+				'FIRST_NAME'=>$io->account->first_name,
+				'HTML_INVOICE'=>$io->html(),
+				'INV_NUM'=>$io->refnum(),
+				'INV_URL'=>URL::site('user/invoice/view/'.$io->id,'http'),
+				'INV_URL_DOWNLOAD'=>URL::site(sprintf('user/invoice/download/%s?token=%s',$io->id,$token),'http'),
+				'SITE_NAME'=>Config::sitename(),
+			);
+
+			// @todo Record email log id if possible.
+			if ($et->send()) {
+				$io->set_remind($key,time());
+				array_push($action,(string)$io);
+			}
+		}
+
+		$this->response->body(_('Invoices Sent: ').join('|',$action));
+	}
+
 	/** END **/
 
 	public function action_audit_invoice_items() {
@@ -241,19 +290,9 @@ class Controller_Task_Invoice extends Controller_Task {
 					$iio->product_name = null;
 					$iio->save();
 				} else {
-				print_r(array("DIFF",'id'=>$iio->id,'pn'=>serialize($iio->product_name),'ppn'=>serialize($iio->product->name()),'pid'=>$iio->product_id,'test'=>strcasecmp($iio->product_name,$iio->product->name())));
+					print_r(array("DIFF",'id'=>$iio->id,'pn'=>serialize($iio->product_name),'ppn'=>serialize($iio->product->name()),'pid'=>$iio->product_id,'test'=>strcasecmp($iio->product_name,$iio->product->name())));
 				}
 			}
-
-			#if ($iio->product->prod_plugin_file == 'HOST') {
-			#	if ($iio->service->name() == strtoupper($iio->domain_name))
-			#		$iio->domain_name=null;
-			#}
-			#if ($iio->product->prod_plugin_file == 'ADSL') {
-			#	if ($iio->service->name() == strtoupper($iio->domain_name))
-			#		$iio->domain_name=null;
-			#	#print_r(array('pid'=>$iio->domain_name,'iio-service-name'=>$iio->service->name(),'iii-domain_name'=>$iio->domain_name));
-			#}
 		}
 
 		$this->response->body($output);
diff --git a/modules/invoice/classes/model/invoice.php b/modules/invoice/classes/model/invoice.php
index b8d6c1e8..b6f972ff 100644
--- a/modules/invoice/classes/model/invoice.php
+++ b/modules/invoice/classes/model/invoice.php
@@ -450,5 +450,23 @@ class Model_Invoice extends ORMOSB {
 
 		return $result;
 	}
+
+	public function html() {
+		// @todo This should be in a config file.
+		$css = '<style type="text/css">';
+		$css .= 'table.box-left { border: 1px solid #AAAACC; margin-right: auto; }';
+		$css .= 'tr.head { font-weight: bold; }';
+		$css .= 'td.head { font-weight: bold; }';
+		$css .= 'td.right { text-align: right; }';
+		$css .= 'tr.odd { background-color: #FCFCFE; }';
+		$css .= 'tr.even { background-color: #F6F6F8; }';
+		$css .= '</style>';
+
+		$output = View::factory('invoice/user/email')
+			->set('mediapath',Route::get('default/media'))
+			->set('io',$this);
+
+		return $css.$output;
+	}
 }
 ?>
diff --git a/modules/invoice/views/invoice/user/email.php b/modules/invoice/views/invoice/user/email.php
new file mode 100644
index 00000000..007b0880
--- /dev/null
+++ b/modules/invoice/views/invoice/user/email.php
@@ -0,0 +1,145 @@
+<!-- @todo NEED to translate this -->
+<table class="box-left" border="0">
+	<tr>
+		<td style="vertical-align: top">
+			<table class="company_details" border="0">
+				<tr>
+					<td class="logo"><?php echo Config::logo(); ?></td>
+					<td class="address"><span class="company_name"><?php echo Config::sitename(); ?></span><br/><?php echo Company::address(); ?><br/><?php echo Company::contacts(); ?></td>
+				</tr>
+			</table>
+		</td>
+		<td>&nbsp;</td>
+		<td>
+			<table class="invoice_summary" border="0">
+				<tr>
+					<td>TAX INVOICE</td>
+					<td class="bold-right"><?php echo $io->id(); ?></td>
+				</tr>
+				<tr>
+					<td>Issue Date</td>
+					<td class="bold-right"><?php echo $io->display('date_orig'); ?></td>
+				</tr>
+				<tr>
+					<td>Due Date</td>
+					<td class="bold-right"><?php echo $io->display('due_date'); ?></td>
+				</tr>
+				<tr>
+					<td>Current Charges</td>
+					<td class="bold-right"><?php echo $io->total(TRUE); ?></td>
+				</tr>
+				<tr>
+					<td>Payments Received to Date</td>
+					<td class="bold-right"><?php echo $io->payments_total(TRUE); ?></td>
+				</tr>
+				<tr>
+					<td>Total Charges Due This Invoice</td>
+					<td class="bold-right"><?php echo $io->due(TRUE); ?></td>
+				</tr>
+			</table>
+		</td>
+	</tr>
+	<tr><td class="spacer" colspan="3">&nbsp;</td></tr>
+	<tr>
+		<td colspan="3">
+			<table class="box-full" border="0">
+				<tr>
+					<td class="head" colspan="4">Charges Detail:</td>
+				</tr>
+				<?php foreach ($io->items_service_periods() as $rs => $items) { ?>
+					<tr>
+						<td>+</td>
+					<?php if ($rs) { ?>
+						<td><?php echo StaticList_RecurSchedule::display($rs); ?></td>
+						<td colspan="1"><?php printf('%s Service(s)',count($items)); ?></td>
+					<?php } else { ?>
+						<td colspan="2">Other Items</td>
+					<?php } ?>
+						<td>&nbsp;</td>
+					</tr>
+					<tr>
+						<td>&nbsp;</td>
+						<td colspan="2">
+							<div id="detail_toggle_<?php echo $rs; ?>">
+								<table class="box-full" border="0">
+								<?php if ($items) { ?>
+									<?php foreach ($io->items_services($items) as $sid) { ?>
+										<?php $so = ORM::factory('service',$sid); ?>
+									<!-- Product Information -->
+									<tr class="head">
+										<td><?php echo $so->id(); ?></td>
+										<td colspan="5"><?php echo $so->service_name(); ?> (<?php echo $so->product_id; ?>)</td>
+										<td class="right"><?php echo Currency::display($io->items_service_total($so->id));?></td>
+									</tr>
+									<!-- End Product Information -->
+
+										<?php foreach ($io->items_service($sid) as $ito) { ?>
+									<!-- Product Sub Information -->
+									<tr>
+										<td>&nbsp;</td>
+										<td><?php echo $ito->trannum();?></td>
+										<td><?php echo $ito->name();?></td>
+										<td><?php echo $ito->detail();?></td>
+										<td><?php echo $ito->period();?></td>
+										<td class="right"><?php echo Currency::display($ito->subtotal());?>&nbsp;</td>
+									</tr>
+									<!-- End Product Sub Information -->
+										<?php } ?>
+
+										<?php if ($ito->discount_amt) { ?>
+									<tr>
+										<td colspan="4">&nbsp;</td>
+										<td><?php echo _('Discounts'); ?></td>
+										<td class="right">(<?php echo Currency::display($io->items_service_discount($so->id));?>)</td>
+									</tr>
+										<?php } ?>
+									<!-- Product Sub Items Tax -->
+									<tr>
+										<td colspan="4">&nbsp;</td>
+										<td><?php echo _('Taxes'); ?></td>
+										<td class="right"><?php echo Currency::display($io->items_service_tax($so->id));?>&nbsp;</td>
+									</tr>
+									<!-- Product End Sub Items Tax -->
+									<?php } ?>
+								<?php } ?>
+								</table>
+							</div>
+						</td>
+					</tr>
+				<?php } ?>
+				<tr>
+					<td class="head" colspan="3">Sub Total of Items:</td>
+					<td class="bold-right"><?php echo $io->subtotal(TRUE); ?>&nbsp;</td>
+				</tr>
+				<?php if ($io->discount()) { ?>
+				<tr>
+					<td class="head" colspan="3">Discounts:</td>
+					<td class="bold-right">(<?php echo $io->discount(TRUE); ?>)</td>
+				</tr>
+				<?php } ?>
+				<tr>
+					<td class="head" colspan="4">Taxes Included:</td>
+				</tr>
+				<?php
+					foreach ($io->tax_summary() as $tid => $amount) {
+						$m = ORM::factory('tax',$tid);
+				?>
+				<tr>
+					<td>&nbsp;</td>
+					<td colspan="2"><?php echo $m->description; ?></td>
+					<td class="bold-right"><?php echo Currency::display($amount); ?>&nbsp;</td>
+				</tr>
+				<?php }?>
+				<!-- @todo Add discounts -->
+				<tr>
+					<td class="head" colspan="3">Total Invoice:</td>
+					<td class="bold-right"><?php echo $io->total(TRUE); ?>&nbsp;</td>
+				</tr>
+				<tr>
+					<td class="head" colspan="3">Total Outstanding:</td>
+					<td class="bold-right"><?php echo $io->account->invoices_due_total(NULL,TRUE); ?>&nbsp;</td>
+				</tr>
+			</table>
+		</td>
+	</tr>
+</table>
diff --git a/modules/invoice/views/invoice/user/view.php b/modules/invoice/views/invoice/user/view.php
index ac9eeff2..a1c52cb2 100644
--- a/modules/invoice/views/invoice/user/view.php
+++ b/modules/invoice/views/invoice/user/view.php
@@ -25,7 +25,7 @@
 					<td class="bold-right"><?php echo $io->display('due_date'); ?></td>
 				</tr>
 				<tr>
-					<td>Current Charges Due</td>
+					<td>Current Charges</td>
 					<td class="bold-right"><?php echo $io->total(TRUE); ?></td>
 				</tr>
 				<tr>
@@ -33,7 +33,7 @@
 					<td class="bold-right"><?php echo $io->payments_total(TRUE); ?></td>
 				</tr>
 				<tr>
-					<td>Total Charges Due</td>
+					<td>Total Charges Due This Invoice</td>
 					<td class="bold-right"><?php echo $io->due(TRUE); ?></td>
 				</tr>
 			</table>
@@ -132,9 +132,13 @@
 				<?php }?>
 				<!-- @todo Add discounts -->
 				<tr>
-					<td class="head" colspan="3">Total:</td>
+					<td class="head" colspan="3">Total Invoice:</td>
 					<td class="bold-right"><?php echo $io->total(TRUE); ?>&nbsp;</td>
 				</tr>
+				<tr>   
+					<td class="head" colspan="3">Total Outstanding:</td>
+					<td class="bold-right"><?php echo $io->account->invoices_due_total(NULL,TRUE); ?>&nbsp;</td>
+				</tr>
 			</table>
 		</td>
 	</tr>
diff --git a/modules/service/classes/controller/admin/service.php b/modules/service/classes/controller/admin/service.php
index fe996b83..f11c790a 100644
--- a/modules/service/classes/controller/admin/service.php
+++ b/modules/service/classes/controller/admin/service.php
@@ -174,6 +174,7 @@ ORDER BY c.id,s.recur_schedule,c.name,a.company,a.last_name,a.first_name
 					'id'=>array('label'=>'ID','url'=>'user/service/view/'),
 					'name()'=>array('label'=>'Service'),
 					'plugin()->ipaddress()'=>array('label'=>'IP Address'),
+					'product->plugin()->speed'=>array('label'=>'Speed'),
 					'product->plugin()->allowance()'=>array('label'=>'Allowance'),
 					'plugin()->traffic_thismonth()'=>array('label'=>'This Month'),
 					'plugin()->traffic_lastmonth()'=>array('label'=>'Last Month'),
@@ -210,6 +211,7 @@ ORDER BY c.id,s.recur_schedule,c.name,a.company,a.last_name,a.first_name
 					'id'=>array('label'=>'ID','url'=>'user/service/view/'),
 					'name()'=>array('label'=>'Service'),
 					'plugin()->ipaddress()'=>array('label'=>'IP Address'),
+					'product->plugin()->speed'=>array('label'=>'Speed'),
 					'product->plugin()->allowance()'=>array('label'=>'Allowance'),
 					'plugin()->traffic_thismonth()'=>array('label'=>'This Month'),
 					'plugin()->traffic_lastmonth()'=>array('label'=>'Last Month'),
diff --git a/modules/service/classes/controller/affiliate/service.php b/modules/service/classes/controller/affiliate/service.php
index d28cae19..9d9fc289 100644
--- a/modules/service/classes/controller/affiliate/service.php
+++ b/modules/service/classes/controller/affiliate/service.php
@@ -172,6 +172,7 @@ ORDER BY c.id,s.recur_schedule,c.name,a.company,a.last_name,a.first_name
 					'id'=>array('label'=>'ID','url'=>'user/service/view/'),
 					'name()'=>array('label'=>'Service'),
 					'plugin()->ipaddress()'=>array('label'=>'IP Address'),
+					'product->plugin()->speed'=>array('label'=>'Speed'),
 					'product->plugin()->allowance()'=>array('label'=>'Allowance'),
 					'plugin()->traffic_thismonth()'=>array('label'=>'This Month'),
 					'plugin()->traffic_lastmonth()'=>array('label'=>'Last Month'),
@@ -208,6 +209,7 @@ ORDER BY c.id,s.recur_schedule,c.name,a.company,a.last_name,a.first_name
 					'id'=>array('label'=>'ID','url'=>'user/service/view/'),
 					'name()'=>array('label'=>'Service'),
 					'plugin()->ipaddress()'=>array('label'=>'IP Address'),
+					'product->plugin()->speed'=>array('label'=>'Speed'),
 					'product->plugin()->allowance()'=>array('label'=>'Allowance'),
 					'plugin()->traffic_thismonth()'=>array('label'=>'This Month'),
 					'plugin()->traffic_lastmonth()'=>array('label'=>'Last Month'),