To facilitate local hacking, RT needs a mechanism to allow site administrators to easily add HTML templates for the web ui and to replace sections of code in RT's core modules _without_ having to modify those modules We'll use several methods to achieve this goal. Webui HTML::Mason allows users to create multiple component hierarchies. RT should ship with a local component root defined and available. This root should be configured as the "primary" component root. Core modules This gets a bit trickier. we want to allow people to trivially subclass core modules and to use those subclasses throughout the code. The way we're going to handle this is by setting up a number of subroutines in config.pm that look something like this: sub NewTicketObj { eval "require $TicketClass"; my $object = new $TicketClass; return ($object); } # This variable is used for ref type checking $TicketClass = "RT::Ticket"; we could use an eval around the require and thus completely avoid specifying the object in two places. which feels like a win. but i'm worried about perf.