DRY is a central principle in Catalyst, yet there is one piece of code that is identical in 90% of all Catalyst applications. sub end : Private { my ($self,$c) = @_; return 1 if $c->res->body; return 1 if $c->response->status =~ /^3\d\d$/; $c->forward( 'MyApp::View::TT' ); } Basically, we want to render a template unless we already have a response, or are redirecting. So, rather than doing this ag