in your code you have:
[geshi lang=php]
foreach($params as $key => $value) { $this->getRequest()->setParam($key, $value);
}
[/lang]

wouldn't that be better to have the object returned by the getRequest cached so that you don't spend time calling it in each loop?
eg
[geshi lang=php]
$myReq = $this->getRequest();
foreach($params as $key => $value) {
$myReq->setParam($key, $value);
}
[/lang]