[Rt-commit] rt branch, 3.9-trunk, updated. rt-3.8.8-478-g64bed9a

Jesse Vincent jesse at bestpractical.com
Wed Aug 18 14:47:50 EDT 2010


The branch, 3.9-trunk has been updated
       via  64bed9aa3ed0bd24346d05f531181e52f643129a (commit)
       via  379bb92dee33e1ae8dca1da31840e2916986f062 (commit)
       via  c43d924bd359a128f3676b9c24d202741eb77941 (commit)
       via  28b671deed51459673209701e1e12b2d5c0ca84b (commit)
       via  6811fdc85b80eab9331ecb9e77fd8fbef2a2bca7 (commit)
       via  31356f8354a0782a50a5549c447f97bf8a64ba19 (commit)
       via  a75a973c5de760e1a086a4a9d834752f7e0b3f22 (commit)
      from  008e964cf387af9025f1e3ce612164173636eab3 (commit)

Summary of changes:
 UPGRADING                                     |   10 +++
 etc/schema.mysql-4.1                          |    2 +-
 lib/RT.pm.in                                  |    6 +-
 lib/RT/ACE.pm                                 |   36 +--------
 lib/RT/ACL.pm                                 |   39 +---------
 lib/RT/Action.pm                              |    5 +-
 lib/RT/Action/AutoOpen.pm                     |    5 +-
 lib/RT/Action/Autoreply.pm                    |    5 +-
 lib/RT/Action/CreateTickets.pm                |    5 +-
 lib/RT/Action/EscalatePriority.pm             |    5 +-
 lib/RT/Action/ExtractSubjectTag.pm            |   10 +--
 lib/RT/Action/Generic.pm                      |   80 -------------------
 lib/RT/Action/LinearEscalate.pm               |    5 +-
 lib/RT/Action/Notify.pm                       |    5 +-
 lib/RT/Action/NotifyAsComment.pm              |    5 +-
 lib/RT/Action/NotifyGroup.pm                  |   10 +--
 lib/RT/Action/NotifyGroupAsComment.pm         |   10 +--
 lib/RT/Action/RecordComment.pm                |    5 +-
 lib/RT/Action/RecordCorrespondence.pm         |    5 +-
 lib/RT/Action/ResolveMembers.pm               |    5 +-
 lib/RT/Action/SendEmail.pm                    |    5 +-
 lib/RT/Action/SetPriority.pm                  |    5 +-
 lib/RT/Action/UserDefined.pm                  |    5 +-
 lib/RT/Approval.pm                            |   10 +--
 lib/RT/Approval/Rule.pm                       |   10 +--
 lib/RT/Attachment.pm                          |   54 ++-----------
 lib/RT/Attachments.pm                         |   40 +---------
 lib/RT/Attribute.pm                           |   50 ++-----------
 lib/RT/Attributes.pm                          |   40 +---------
 lib/RT/Base.pm                                |   15 +++-
 lib/RT/CachedGroupMember.pm                   |   42 +----------
 lib/RT/CachedGroupMembers.pm                  |   40 +---------
 lib/RT/Condition.pm                           |    5 +-
 lib/RT/Condition/AnyTransaction.pm            |    5 +-
 lib/RT/Condition/BeforeDue.pm                 |    5 +-
 lib/RT/Condition/CloseTicket.pm               |    5 +-
 lib/RT/Condition/Generic.pm                   |   80 -------------------
 lib/RT/Condition/Overdue.pm                   |    5 +-
 lib/RT/Condition/OwnerChange.pm               |    5 +-
 lib/RT/Condition/PriorityChange.pm            |    5 +-
 lib/RT/Condition/PriorityExceeds.pm           |    5 +-
 lib/RT/Condition/QueueChange.pm               |    5 +-
 lib/RT/Condition/ReopenTicket.pm              |    5 +-
 lib/RT/Condition/StatusChange.pm              |    5 +-
 lib/RT/Condition/UserDefined.pm               |    5 +-
 lib/RT/Config.pm                              |   10 +--
 lib/RT/Crypt/GnuPG.pm                         |   10 +--
 lib/RT/CurrentUser.pm                         |    5 +-
 lib/RT/CustomField.pm                         |   59 ++------------
 lib/RT/CustomFieldValue.pm                    |   46 +----------
 lib/RT/CustomFieldValues.pm                   |   66 ++++------------
 lib/RT/CustomFieldValues/External.pm          |   10 +--
 lib/RT/CustomFieldValues/Groups.pm            |   10 +--
 lib/RT/CustomFields.pm                        |   43 +---------
 lib/RT/Dashboard.pm                           |    5 +-
 lib/RT/Date.pm                                |    5 +-
 lib/RT/EmailParser.pm                         |    5 +-
 lib/RT/Graph/Tickets.pm                       |   10 +--
 lib/RT/Group.pm                               |   42 +----------
 lib/RT/GroupMember.pm                         |   42 +----------
 lib/RT/GroupMembers.pm                        |   40 +---------
 lib/RT/Groups.pm                              |   38 +---------
 lib/RT/Handle.pm                              |    5 +-
 lib/RT/I18N.pm                                |    5 +-
 lib/RT/I18N/i_default.pm                      |    5 +-
 lib/RT/Installer.pm                           |   10 +--
 lib/RT/Interface/CLI.pm                       |    5 +-
 lib/RT/Interface/Email.pm                     |    5 +-
 lib/RT/Interface/Email/Auth/GnuPG.pm          |    9 +--
 lib/RT/Interface/Email/Auth/MailFrom.pm       |    5 +-
 lib/RT/Interface/Email/Filter/SpamAssassin.pm |    5 +-
 lib/RT/Interface/REST.pm                      |   10 +--
 lib/RT/Interface/Web.pm                       |    5 +-
 lib/RT/Interface/Web/QueryBuilder.pm          |    5 +-
 lib/RT/Interface/Web/QueryBuilder/Tree.pm     |    5 +-
 lib/RT/Link.pm                                |   42 +----------
 lib/RT/Links.pm                               |   40 +---------
 lib/RT/ObjectCustomField.pm                   |   50 ++-----------
 lib/RT/ObjectCustomFieldValue.pm              |   72 ++++++-----------
 lib/RT/ObjectCustomFieldValues.pm             |   40 +---------
 lib/RT/ObjectCustomFields.pm                  |   40 +---------
 lib/RT/Plugin.pm                              |   10 +--
 lib/RT/Principal.pm                           |   42 +----------
 lib/RT/Principals.pm                          |   40 +---------
 lib/RT/Queue.pm                               |   42 +----------
 lib/RT/Queues.pm                              |   40 +---------
 lib/RT/Record.pm                              |    5 +-
 lib/RT/Reminders.pm                           |   10 +--
 lib/RT/Report/Tickets.pm                      |   10 +--
 lib/RT/Report/Tickets/Entry.pm                |   10 +--
 lib/RT/Rule.pm                                |   10 +--
 lib/RT/Ruleset.pm                             |   10 +--
 lib/RT/SQL.pm                                 |   10 +--
 lib/RT/SavedSearch.pm                         |    5 +-
 lib/RT/SavedSearches.pm                       |    5 +-
 lib/RT/Scrip.pm                               |   42 +----------
 lib/RT/ScripAction.pm                         |   50 ++-----------
 lib/RT/ScripActions.pm                        |   40 +---------
 lib/RT/ScripCondition.pm                      |   50 ++-----------
 lib/RT/ScripConditions.pm                     |   40 +---------
 lib/RT/Scrips.pm                              |   40 +---------
 lib/RT/Search.pm                              |    5 +-
 lib/RT/Search/ActiveTicketsInQueue.pm         |    5 +-
 lib/RT/Search/FromSQL.pm                      |    5 +-
 lib/RT/Search/Generic.pm                      |   80 -------------------
 lib/RT/Search/Googleish.pm                    |    5 +-
 lib/RT/SearchBuilder.pm                       |    5 +-
 lib/RT/SharedSetting.pm                       |    5 +-
 lib/RT/StyleGuide.pod                         |   16 ++++
 lib/RT/System.pm                              |    5 +-
 lib/RT/Template.pm                            |   50 ++-----------
 lib/RT/Templates.pm                           |   40 +---------
 lib/RT/Ticket.pm                              |  104 ++++++++-----------------
 lib/RT/Tickets.pm                             |   40 +---------
 lib/RT/Transaction.pm                         |   42 +----------
 lib/RT/Transactions.pm                        |   40 +---------
 lib/RT/URI.pm                                 |    5 +-
 lib/RT/URI/base.pm                            |    5 +-
 lib/RT/URI/fsck_com_rt.pm                     |    5 +-
 lib/RT/User.pm                                |   74 ++++-------------
 lib/RT/Users.pm                               |   40 +---------
 lib/RT/Util.pm                                |   10 +--
 sbin/factory                                  |   71 +++++------------
 t/00-compile.t                                |   11 +--
 124 files changed, 338 insertions(+), 2364 deletions(-)
 delete mode 100644 lib/RT/Action/Generic.pm
 delete mode 100644 lib/RT/Condition/Generic.pm
 delete mode 100644 lib/RT/Search/Generic.pm

- Log -----------------------------------------------------------------
commit a75a973c5de760e1a086a4a9d834752f7e0b3f22
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 12:14:24 2010 -0400

    A new version of the overlay loading code that doesn't use string eval
    and is a method on RT::Base

diff --git a/lib/RT/Base.pm b/lib/RT/Base.pm
index 6e481b0..461bb38 100755
--- a/lib/RT/Base.pm
+++ b/lib/RT/Base.pm
@@ -163,10 +163,17 @@ sub loc_fuzzy {
     }
 }
 
-eval "require RT::Base_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Base_Vendor.pm});
-eval "require RT::Base_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Base_Local.pm});
+sub _ImportOverlays {
+    my $class = shift;
+    my ($package,undef,undef) = caller();
+    $package =~ s|::|/|g;
+    for (qw(Overlay Vendor Local)) {
+        my $filename = $package."_".$_.".pm";
+        eval { require $filename };
+        die $@ if ($@ && $@ !~ qr{^Can't locate $filename});
+    }
+}
 
+__PACKAGE__->_ImportOverlays();
 
 1;

commit 31356f8354a0782a50a5549c447f97bf8a64ba19
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 12:16:23 2010 -0400

    update searchbuilder factory to:
    
        * use base
        * use RT::Base->_ImportOverlays();
        * contain the current logic for building SortOrder as we have it in
          the hand-edited "DO NOT EDIT classes

diff --git a/sbin/factory b/sbin/factory
index a42a13f..4d19757 100755
--- a/sbin/factory
+++ b/sbin/factory
@@ -68,7 +68,7 @@ my $LicenseBlock = << '.';
 # 
 # COPYRIGHT:
 # 
-# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
 #                                          <jesse at bestpractical.com>
 # 
 # (Except where explicitly superseded by other copyright notices)
@@ -344,11 +344,9 @@ $CreateOutParams);
 
 package $CollectionClassName;
 
-use $CollectionBaseclass;
 use $RecordClassName;
 
-use vars qw( \@ISA );
-\@ISA= qw($CollectionBaseclass);
+use base '$CollectionBaseclass';
 
 
 sub _Init {
@@ -358,7 +356,24 @@ sub _Init {
 
 ";
 
-    if ( $fields{'SortOrder'} ) {
+    if ( $fields{'SortOrder'} && $fields{'Name'} ) {
+        $CollectionClass .= "
+
+  # By default, order by SortOrder
+  \$self->OrderByCols(
+	 { ALIAS => 'main',
+	   FIELD => 'SortOrder',
+	   ORDER => 'ASC' },
+	 { ALIAS => 'main',
+	   FIELD => 'Name',
+	   ORDER => 'ASC' },
+	 { ALIAS => 'main',
+	   FIELD => 'id',
+	   ORDER => 'ASC' },
+     );
+";
+    }
+    elsif ( $fields{'SortOrder'} ) {
 
         $CollectionClass .= "
 
@@ -406,16 +421,12 @@ $RecordClassName
 =cut
 
 package $RecordClassName;
-use $RecordBaseclass; 
 ";
 
     foreach my $key ( keys %requirements ) {
         $RecordClassHeader .= $requirements{$key} . "\n";
     }
-    $RecordClassHeader .= "
-
-use vars qw( \@ISA );
-\@ISA= qw( $RecordBaseclass );
+    $RecordClassHeader .= "use base '$RecordBaseclass';
 
 sub _Init {
   my \$self = shift; 
@@ -468,27 +479,9 @@ sub MagicImport {
     #if (exists \$warnings::{unimport})  {
     #        no warnings qw(redefine);
 
-    my $path = $class;
-    $path =~ s#::#/#gi;
-
-
     my $content = "
-        eval \"require @{[$class]}_Overlay\";
-        if (\$@ && \$@ !~ qr{^Can't locate ".$path."_Overlay.pm}) {
-            die \$@;
-        };
-
-        eval \"require @{[$class]}_Vendor\";
-        if (\$@ && \$@ !~ qr{^Can't locate ".$path."_Vendor.pm}) {
-            die \$@;
-        };
-
-        eval \"require @{[$class]}_Local\";
-        if (\$@ && \$@ !~ qr{^Can't locate ".$path."_Local.pm}) {
-            die \$@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO

commit 6811fdc85b80eab9331ecb9e77fd8fbef2a2bca7
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 12:26:23 2010 -0400

    Regenerate core generated files, removing a bunch of string eval
    boilerplate code.

diff --git a/etc/schema.mysql-4.1 b/etc/schema.mysql-4.1
index 172e477..0552ec1 100755
--- a/etc/schema.mysql-4.1
+++ b/etc/schema.mysql-4.1
@@ -168,7 +168,7 @@ CREATE TABLE ACL (
   id INTEGER NOT NULL  AUTO_INCREMENT,
   PrincipalType varchar(25) CHARACTER SET ascii NOT NULL, #"User" "Group", "Owner", "Cc" "AdminCc", "Requestor"
 
-  PrincipalId integer NOT NULL  , #Foreign key to principals
+  PrincipalId integer NOT NULL DEFAULT 0 , #Foreign key to principals
   RightName varchar(25) CHARACTER SET ascii NOT NULL,
   ObjectType varchar(25) CHARACTER SET ascii NOT NULL,
   ObjectId integer NOT NULL default 0,
diff --git a/lib/RT/ACE.pm b/lib/RT/ACE.pm
index 23b30fb..271405d 100755
--- a/lib/RT/ACE.pm
+++ b/lib/RT/ACE.pm
@@ -285,22 +285,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::ACE_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ACE_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ACE_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ACE_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ACE_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ACE_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ACL.pm b/lib/RT/ACL.pm
index efe3898..0e14a0c 100755
--- a/lib/RT/ACL.pm
+++ b/lib/RT/ACL.pm
@@ -72,9 +72,10 @@ use strict;
 
 package RT::ACL;
 
-use base 'RT::SearchBuilder';
 use RT::ACE;
 
+use base 'RT::SearchBuilder';
+
 
 sub _Init {
     my $self = shift;
@@ -97,22 +98,8 @@ sub NewItem {
     return(RT::ACE->new($self->CurrentUser));
 }
 
-        eval "require RT::ACL_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ACL_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ACL_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ACL_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ACL_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ACL_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Attachment.pm b/lib/RT/Attachment.pm
index ab69f98..137830c 100755
--- a/lib/RT/Attachment.pm
+++ b/lib/RT/Attachment.pm
@@ -69,11 +69,7 @@ RT::Attachment
 =cut
 
 package RT::Attachment;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -97,7 +93,7 @@ Create takes a hash of values and creates a row in the database:
   varchar(255) 'Filename'.
   varchar(80) 'ContentType'.
   varchar(80) 'ContentEncoding'.
-  longtext 'Content'.
+  longblob 'Content'.
   longtext 'Headers'.
 
 =cut
@@ -108,7 +104,7 @@ Create takes a hash of values and creates a row in the database:
 sub Create {
     my $self = shift;
     my %args = ( 
-                TransactionId => '0',
+                TransactionId => '',
                 Parent => '0',
                 MessageId => '',
                 Subject => '',
@@ -273,7 +269,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Content
 
 Returns the current value of Content. 
-(In the database, Content is stored as longtext.)
+(In the database, Content is stored as longblob.)
 
 
 
@@ -282,7 +278,7 @@ Returns the current value of Content.
 
 Set Content to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Content will be stored as a longtext.)
+(In the database, Content will be stored as a longblob.)
 
 
 =cut
@@ -331,7 +327,7 @@ sub _CoreAccessible {
         id =>
 		{read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         TransactionId => 
-		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         Parent => 
 		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         MessageId => 
@@ -345,7 +341,7 @@ sub _CoreAccessible {
         ContentEncoding => 
 		{read => 1, write => 1, sql_type => 12, length => 80,  is_blob => 0,  is_numeric => 0,  type => 'varchar(80)', default => ''},
         Content => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'longtext', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'longblob', default => ''},
         Headers => 
 		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'longtext', default => ''},
         Creator => 
@@ -357,22 +353,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Attachment_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attachment_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attachment_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attachment_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attachment_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attachment_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Attachments.pm b/lib/RT/Attachments.pm
index 8b6b154..733e02e 100755
--- a/lib/RT/Attachments.pm
+++ b/lib/RT/Attachments.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Attachments;
 
-use RT::SearchBuilder;
 use RT::Attachment;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Attachment->new($self->CurrentUser));
 }
 
-        eval "require RT::Attachments_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attachments_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attachments_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attachments_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attachments_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attachments_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Attribute.pm b/lib/RT/Attribute.pm
index dd293bc..ab4d5ff 100644
--- a/lib/RT/Attribute.pm
+++ b/lib/RT/Attribute.pm
@@ -69,11 +69,7 @@ RT::Attribute
 =cut
 
 package RT::Attribute;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -92,7 +88,7 @@ Create takes a hash of values and creates a row in the database:
 
   varchar(255) 'Name'.
   varchar(255) 'Description'.
-  text 'Content'.
+  blob 'Content'.
   varchar(16) 'ContentType'.
   varchar(64) 'ObjectType'.
   int(11) 'ObjectId'.
@@ -174,7 +170,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Content
 
 Returns the current value of Content. 
-(In the database, Content is stored as text.)
+(In the database, Content is stored as blob.)
 
 
 
@@ -183,7 +179,7 @@ Returns the current value of Content.
 
 Set Content to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Content will be stored as a text.)
+(In the database, Content will be stored as a blob.)
 
 
 =cut
@@ -290,7 +286,7 @@ sub _CoreAccessible {
         Description => 
 		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varchar(255)', default => ''},
         Content => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'text', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'blob', default => ''},
         ContentType => 
 		{read => 1, write => 1, sql_type => 12, length => 16,  is_blob => 0,  is_numeric => 0,  type => 'varchar(16)', default => ''},
         ObjectType => 
@@ -310,22 +306,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Attribute_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attribute_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attribute_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attribute_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attribute_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attribute_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Attributes.pm b/lib/RT/Attributes.pm
index 9b8883b..06c8b49 100644
--- a/lib/RT/Attributes.pm
+++ b/lib/RT/Attributes.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Attributes;
 
-use RT::SearchBuilder;
 use RT::Attribute;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Attribute->new($self->CurrentUser));
 }
 
-        eval "require RT::Attributes_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attributes_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attributes_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attributes_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Attributes_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Attributes_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/CachedGroupMember.pm b/lib/RT/CachedGroupMember.pm
index 82dfd3d..e708637 100755
--- a/lib/RT/CachedGroupMember.pm
+++ b/lib/RT/CachedGroupMember.pm
@@ -69,11 +69,7 @@ RT::CachedGroupMember
 =cut
 
 package RT::CachedGroupMember;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -243,22 +239,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::CachedGroupMember_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMember_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CachedGroupMember_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMember_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CachedGroupMember_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMember_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/CachedGroupMembers.pm b/lib/RT/CachedGroupMembers.pm
index 56ca32d..4a02b4b 100755
--- a/lib/RT/CachedGroupMembers.pm
+++ b/lib/RT/CachedGroupMembers.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::CachedGroupMembers;
 
-use RT::SearchBuilder;
 use RT::CachedGroupMember;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::CachedGroupMember->new($self->CurrentUser));
 }
 
-        eval "require RT::CachedGroupMembers_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMembers_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CachedGroupMembers_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMembers_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CachedGroupMembers_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMembers_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
index 743f154..95f58b7 100755
--- a/lib/RT/CustomField.pm
+++ b/lib/RT/CustomField.pm
@@ -69,11 +69,7 @@ RT::CustomField
 =cut
 
 package RT::CustomField;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -93,16 +89,13 @@ Create takes a hash of values and creates a row in the database:
   varchar(200) 'Name'.
   varchar(200) 'Type'.
   int(11) 'MaxValues'.
-  longtext 'Pattern'.
+  text 'Pattern'.
   smallint(6) 'Repeated'.
   varchar(255) 'Description'.
   int(11) 'SortOrder'.
   varchar(255) 'LookupType'.
   smallint(6) 'Disabled'.
 
-  'LookupType' is generally the result of either 
-  RT::Ticket->CustomFieldLookupType or RT::Transaction->CustomFieldLookupType
-
 =cut
 
 
@@ -120,10 +113,8 @@ sub Create {
                 SortOrder => '0',
                 LookupType => '',
                 Disabled => '0',
-                LinkToValue => '',
-                IncludeContentForValue => '',
 
-                  @_);
+		  @_);
     $self->SUPER::Create(
                          Name => $args{'Name'},
                          Type => $args{'Type'},
@@ -134,8 +125,6 @@ sub Create {
                          SortOrder => $args{'SortOrder'},
                          LookupType => $args{'LookupType'},
                          Disabled => $args{'Disabled'},
-                         LinkToValue => $args{'LinkToValue'},
-                         IncludeContentForValue => $args{'IncludeContentForValue'}
 );
 
 }
@@ -208,7 +197,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Pattern
 
 Returns the current value of Pattern. 
-(In the database, Pattern is stored as longtext.)
+(In the database, Pattern is stored as text.)
 
 
 
@@ -217,7 +206,7 @@ Returns the current value of Pattern.
 
 Set Pattern to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Pattern will be stored as a longtext.)
+(In the database, Pattern will be stored as a text.)
 
 
 =cut
@@ -362,7 +351,7 @@ sub _CoreAccessible {
         MaxValues => 
 		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         Pattern => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'longtext', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'text', default => ''},
         Repeated => 
 		{read => 1, write => 1, sql_type => 5, length => 6,  is_blob => 0,  is_numeric => 1,  type => 'smallint(6)', default => '0'},
         Description => 
@@ -386,22 +375,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::CustomField_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomField_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomField_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomField_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomField_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomField_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/CustomFieldValue.pm b/lib/RT/CustomFieldValue.pm
index 3967f70..0a1eb15 100755
--- a/lib/RT/CustomFieldValue.pm
+++ b/lib/RT/CustomFieldValue.pm
@@ -69,12 +69,8 @@ RT::CustomFieldValue
 =cut
 
 package RT::CustomFieldValue;
-use RT::Record; 
 use RT::CustomField;
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -104,7 +100,7 @@ Create takes a hash of values and creates a row in the database:
 sub Create {
     my $self = shift;
     my %args = ( 
-                CustomField => '0',
+                CustomField => '',
                 Name => '',
                 Description => '',
                 SortOrder => '0',
@@ -259,7 +255,7 @@ sub _CoreAccessible {
         id =>
 		{read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         CustomField => 
-		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         Name => 
 		{read => 1, write => 1, sql_type => 12, length => 200,  is_blob => 0,  is_numeric => 0,  type => 'varchar(200)', default => ''},
         Description => 
@@ -279,22 +275,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::CustomFieldValue_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValue_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomFieldValue_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValue_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomFieldValue_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValue_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/CustomFieldValues.pm b/lib/RT/CustomFieldValues.pm
index 1e33302..e8464c7 100755
--- a/lib/RT/CustomFieldValues.pm
+++ b/lib/RT/CustomFieldValues.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::CustomFieldValues;
 
-use RT::SearchBuilder;
 use RT::CustomFieldValue;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -84,18 +82,20 @@ sub _Init {
     $self->{'table'} = 'CustomFieldValues';
     $self->{'primary_key'} = 'id';
 
-    # By default, order by SortOrder
-    $self->OrderByCols(
-         { ALIAS => 'main',
-           FIELD => 'SortOrder',
-           ORDER => 'ASC' },
-         { ALIAS => 'main',
-           FIELD => 'Name',
-           ORDER => 'ASC' },
-         { ALIAS => 'main',
-           FIELD => 'id',
-           ORDER => 'ASC' },
-    );
+
+
+  # By default, order by SortOrder
+  $self->OrderByCols(
+	 { ALIAS => 'main',
+	   FIELD => 'SortOrder',
+	   ORDER => 'ASC' },
+	 { ALIAS => 'main',
+	   FIELD => 'Name',
+	   ORDER => 'ASC' },
+	 { ALIAS => 'main',
+	   FIELD => 'id',
+	   ORDER => 'ASC' },
+     );
 
     return ( $self->SUPER::_Init(@_) );
 }
@@ -112,22 +112,8 @@ sub NewItem {
     return(RT::CustomFieldValue->new($self->CurrentUser));
 }
 
-        eval "require RT::CustomFieldValues_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomFieldValues_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomFieldValues_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/CustomFields.pm b/lib/RT/CustomFields.pm
index 894be0c..96027fb 100755
--- a/lib/RT/CustomFields.pm
+++ b/lib/RT/CustomFields.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::CustomFields;
 
-use RT::SearchBuilder;
 use RT::CustomField;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -92,6 +90,9 @@ sub _Init {
 	   FIELD => 'SortOrder',
 	   ORDER => 'ASC' },
 	 { ALIAS => 'main',
+	   FIELD => 'Name',
+	   ORDER => 'ASC' },
+	 { ALIAS => 'main',
 	   FIELD => 'id',
 	   ORDER => 'ASC' },
      );
@@ -111,22 +112,8 @@ sub NewItem {
     return(RT::CustomField->new($self->CurrentUser));
 }
 
-        eval "require RT::CustomFields_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFields_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomFields_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFields_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::CustomFields_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/CustomFields_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Graph/Tickets.pm b/lib/RT/Graph/Tickets.pm
index 96ef34d..2e0e07f 100644
--- a/lib/RT/Graph/Tickets.pm
+++ b/lib/RT/Graph/Tickets.pm
@@ -345,14 +345,6 @@ sub TicketLinks {
     return $args{'Graph'};
 }
 
-eval "require RT::Graph::Tickets_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Graph/Tickets_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Graph::Tickets_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Graph/Tickets_Local.pm}) {
-    die $@;
-};
+__PACKAGE__->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index aaad13f..8600861 100755
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -69,11 +69,7 @@ RT::Group
 =cut
 
 package RT::Group;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -243,22 +239,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Group_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Group_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Group_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Group_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Group_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Group_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/GroupMember.pm b/lib/RT/GroupMember.pm
index 7bd261a..6616f2f 100755
--- a/lib/RT/GroupMember.pm
+++ b/lib/RT/GroupMember.pm
@@ -69,11 +69,7 @@ RT::GroupMember
 =cut
 
 package RT::GroupMember;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -174,22 +170,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::GroupMember_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/GroupMember_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::GroupMember_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/GroupMember_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::GroupMember_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/GroupMember_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/GroupMembers.pm b/lib/RT/GroupMembers.pm
index ac5e379..282e2a6 100755
--- a/lib/RT/GroupMembers.pm
+++ b/lib/RT/GroupMembers.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::GroupMembers;
 
-use RT::SearchBuilder;
 use RT::GroupMember;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::GroupMember->new($self->CurrentUser));
 }
 
-        eval "require RT::GroupMembers_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/GroupMembers_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::GroupMembers_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/GroupMembers_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::GroupMembers_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/GroupMembers_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Groups.pm b/lib/RT/Groups.pm
index 3f09dd0..86f803d 100755
--- a/lib/RT/Groups.pm
+++ b/lib/RT/Groups.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Groups;
 
-use RT::SearchBuilder;
 use RT::Group;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,20 +98,8 @@ sub NewItem {
     return(RT::Group->new($self->CurrentUser));
 }
 
-        eval "require RT::Groups_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Groups_Overlay.pm}) {
-            die $@;
-        };
 
-        eval "require RT::Groups_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Groups_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Groups_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Groups_Local.pm}) {
-            die $@;
-        };
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Link.pm b/lib/RT/Link.pm
index 3c0a87e..6eb8c98 100755
--- a/lib/RT/Link.pm
+++ b/lib/RT/Link.pm
@@ -69,11 +69,7 @@ RT::Link
 =cut
 
 package RT::Link;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -287,22 +283,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Link_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Link_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Link_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Link_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Link_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Link_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Links.pm b/lib/RT/Links.pm
index 223097d..06f64e1 100755
--- a/lib/RT/Links.pm
+++ b/lib/RT/Links.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Links;
 
-use RT::SearchBuilder;
 use RT::Link;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Link->new($self->CurrentUser));
 }
 
-        eval "require RT::Links_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Links_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Links_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Links_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Links_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Links_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ObjectCustomField.pm b/lib/RT/ObjectCustomField.pm
index a696b99..353fd56 100644
--- a/lib/RT/ObjectCustomField.pm
+++ b/lib/RT/ObjectCustomField.pm
@@ -69,12 +69,8 @@ RT::ObjectCustomField
 =cut
 
 package RT::ObjectCustomField;
-use RT::Record; 
 use RT::CustomField;
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -103,8 +99,8 @@ Create takes a hash of values and creates a row in the database:
 sub Create {
     my $self = shift;
     my %args = ( 
-                CustomField => '0',
-                ObjectId => '0',
+                CustomField => '',
+                ObjectId => '',
                 SortOrder => '0',
 
 		  @_);
@@ -238,9 +234,9 @@ sub _CoreAccessible {
         id =>
 		{read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         CustomField => 
-		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         ObjectId => 
-		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         SortOrder => 
 		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Creator => 
@@ -256,22 +252,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::ObjectCustomField_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomField_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomField_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomField_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomField_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomField_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ObjectCustomFieldValue.pm b/lib/RT/ObjectCustomFieldValue.pm
index 32617ad..c8b2fbd 100644
--- a/lib/RT/ObjectCustomFieldValue.pm
+++ b/lib/RT/ObjectCustomFieldValue.pm
@@ -69,12 +69,8 @@ RT::ObjectCustomFieldValue
 =cut
 
 package RT::ObjectCustomFieldValue;
-use RT::Record; 
 use RT::CustomField;
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -96,7 +92,7 @@ Create takes a hash of values and creates a row in the database:
   int(11) 'ObjectId'.
   int(11) 'SortOrder'.
   varchar(255) 'Content'.
-  longtext 'LargeContent'.
+  longblob 'LargeContent'.
   varchar(80) 'ContentType'.
   varchar(80) 'ContentEncoding'.
   smallint(6) 'Disabled'.
@@ -109,9 +105,9 @@ Create takes a hash of values and creates a row in the database:
 sub Create {
     my $self = shift;
     my %args = ( 
-                CustomField => '0',
+                CustomField => '',
                 ObjectType => '',
-                ObjectId => '0',
+                ObjectId => '',
                 SortOrder => '0',
                 Content => '',
                 LargeContent => '',
@@ -163,6 +159,20 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =cut
 
 
+=head2 CustomFieldObj
+
+Returns the CustomField Object which has the id returned by CustomField
+
+
+=cut
+
+sub CustomFieldObj {
+	my $self = shift;
+	my $CustomField =  RT::CustomField->new($self->CurrentUser);
+	$CustomField->Load($self->__Value('CustomField'));
+	return($CustomField);
+}
+
 =head2 ObjectType
 
 Returns the current value of ObjectType. 
@@ -238,7 +248,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 LargeContent
 
 Returns the current value of LargeContent. 
-(In the database, LargeContent is stored as longtext.)
+(In the database, LargeContent is stored as longblob.)
 
 
 
@@ -247,7 +257,7 @@ Returns the current value of LargeContent.
 
 Set LargeContent to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, LargeContent will be stored as a longtext.)
+(In the database, LargeContent will be stored as a longblob.)
 
 
 =cut
@@ -350,17 +360,17 @@ sub _CoreAccessible {
         id =>
 		{read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         CustomField => 
-		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         ObjectType => 
 		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varchar(255)', default => ''},
         ObjectId => 
-		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         SortOrder => 
 		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Content => 
 		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varchar(255)', default => ''},
         LargeContent => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'longtext', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'longblob', default => ''},
         ContentType => 
 		{read => 1, write => 1, sql_type => 12, length => 80,  is_blob => 0,  is_numeric => 0,  type => 'varchar(80)', default => ''},
         ContentEncoding => 
@@ -380,22 +390,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::ObjectCustomFieldValue_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFieldValue_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomFieldValue_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFieldValue_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomFieldValue_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFieldValue_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ObjectCustomFieldValues.pm b/lib/RT/ObjectCustomFieldValues.pm
index bdff71e..d7f8764 100644
--- a/lib/RT/ObjectCustomFieldValues.pm
+++ b/lib/RT/ObjectCustomFieldValues.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::ObjectCustomFieldValues;
 
-use RT::SearchBuilder;
 use RT::ObjectCustomFieldValue;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -111,22 +109,8 @@ sub NewItem {
     return(RT::ObjectCustomFieldValue->new($self->CurrentUser));
 }
 
-        eval "require RT::ObjectCustomFieldValues_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFieldValues_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomFieldValues_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFieldValues_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomFieldValues_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFieldValues_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ObjectCustomFields.pm b/lib/RT/ObjectCustomFields.pm
index 8b309a4..e0803da 100644
--- a/lib/RT/ObjectCustomFields.pm
+++ b/lib/RT/ObjectCustomFields.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::ObjectCustomFields;
 
-use RT::SearchBuilder;
 use RT::ObjectCustomField;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -111,22 +109,8 @@ sub NewItem {
     return(RT::ObjectCustomField->new($self->CurrentUser));
 }
 
-        eval "require RT::ObjectCustomFields_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFields_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomFields_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFields_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ObjectCustomFields_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ObjectCustomFields_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Principal.pm b/lib/RT/Principal.pm
index aaa4fa7..f7b3b27 100755
--- a/lib/RT/Principal.pm
+++ b/lib/RT/Principal.pm
@@ -69,11 +69,7 @@ RT::Principal
 =cut
 
 package RT::Principal;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -197,22 +193,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Principal_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Principal_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Principal_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Principal_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Principal_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Principal_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Principals.pm b/lib/RT/Principals.pm
index 1be2851..18768eb 100755
--- a/lib/RT/Principals.pm
+++ b/lib/RT/Principals.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Principals;
 
-use RT::SearchBuilder;
 use RT::Principal;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Principal->new($self->CurrentUser));
 }
 
-        eval "require RT::Principals_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Principals_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Principals_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Principals_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Principals_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Principals_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index cb12108..15b7a65 100755
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -69,11 +69,7 @@ RT::Queue
 =cut
 
 package RT::Queue;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -356,22 +352,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Queue_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Queue_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Queue_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Queue_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Queue_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Queue_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Queues.pm b/lib/RT/Queues.pm
index eeb9b98..5b56fa6 100755
--- a/lib/RT/Queues.pm
+++ b/lib/RT/Queues.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Queues;
 
-use RT::SearchBuilder;
 use RT::Queue;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Queue->new($self->CurrentUser));
 }
 
-        eval "require RT::Queues_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Queues_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Queues_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Queues_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Queues_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Queues_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Scrip.pm b/lib/RT/Scrip.pm
index d552872..fad74c0 100755
--- a/lib/RT/Scrip.pm
+++ b/lib/RT/Scrip.pm
@@ -69,15 +69,11 @@ RT::Scrip
 =cut
 
 package RT::Scrip;
-use RT::Record; 
 use RT::Queue;
 use RT::Template;
 use RT::ScripCondition;
 use RT::ScripAction;
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -485,22 +481,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Scrip_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Scrip_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Scrip_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Scrip_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Scrip_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Scrip_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ScripAction.pm b/lib/RT/ScripAction.pm
index c0d84f6..70956ad 100755
--- a/lib/RT/ScripAction.pm
+++ b/lib/RT/ScripAction.pm
@@ -69,11 +69,7 @@ RT::ScripAction
 =cut
 
 package RT::ScripAction;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -93,7 +89,7 @@ Create takes a hash of values and creates a row in the database:
   varchar(200) 'Name'.
   varchar(255) 'Description'.
   varchar(60) 'ExecModule'.
-  varchar(255) 'Argument'.
+  varbinary(255) 'Argument'.
 
 =cut
 
@@ -186,7 +182,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Argument
 
 Returns the current value of Argument. 
-(In the database, Argument is stored as varchar(255).)
+(In the database, Argument is stored as varbinary(255).)
 
 
 
@@ -195,7 +191,7 @@ Returns the current value of Argument.
 
 Set Argument to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Argument will be stored as a varchar(255).)
+(In the database, Argument will be stored as a varbinary(255).)
 
 
 =cut
@@ -250,7 +246,7 @@ sub _CoreAccessible {
         ExecModule => 
 		{read => 1, write => 1, sql_type => 12, length => 60,  is_blob => 0,  is_numeric => 0,  type => 'varchar(60)', default => ''},
         Argument => 
-		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varchar(255)', default => ''},
+		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varbinary(255)', default => ''},
         Creator => 
 		{read => 1, auto => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Created => 
@@ -264,22 +260,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::ScripAction_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripAction_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripAction_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripAction_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripAction_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripAction_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ScripActions.pm b/lib/RT/ScripActions.pm
index 351fc99..900b9c2 100755
--- a/lib/RT/ScripActions.pm
+++ b/lib/RT/ScripActions.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::ScripActions;
 
-use RT::SearchBuilder;
 use RT::ScripAction;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::ScripAction->new($self->CurrentUser));
 }
 
-        eval "require RT::ScripActions_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripActions_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripActions_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripActions_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripActions_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripActions_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ScripCondition.pm b/lib/RT/ScripCondition.pm
index 4387745..f607cc6 100755
--- a/lib/RT/ScripCondition.pm
+++ b/lib/RT/ScripCondition.pm
@@ -69,11 +69,7 @@ RT::ScripCondition
 =cut
 
 package RT::ScripCondition;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -93,7 +89,7 @@ Create takes a hash of values and creates a row in the database:
   varchar(200) 'Name'.
   varchar(255) 'Description'.
   varchar(60) 'ExecModule'.
-  varchar(255) 'Argument'.
+  varbinary(255) 'Argument'.
   varchar(60) 'ApplicableTransTypes'.
 
 =cut
@@ -189,7 +185,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Argument
 
 Returns the current value of Argument. 
-(In the database, Argument is stored as varchar(255).)
+(In the database, Argument is stored as varbinary(255).)
 
 
 
@@ -198,7 +194,7 @@ Returns the current value of Argument.
 
 Set Argument to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Argument will be stored as a varchar(255).)
+(In the database, Argument will be stored as a varbinary(255).)
 
 
 =cut
@@ -271,7 +267,7 @@ sub _CoreAccessible {
         ExecModule => 
 		{read => 1, write => 1, sql_type => 12, length => 60,  is_blob => 0,  is_numeric => 0,  type => 'varchar(60)', default => ''},
         Argument => 
-		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varchar(255)', default => ''},
+		{read => 1, write => 1, sql_type => 12, length => 255,  is_blob => 0,  is_numeric => 0,  type => 'varbinary(255)', default => ''},
         ApplicableTransTypes => 
 		{read => 1, write => 1, sql_type => 12, length => 60,  is_blob => 0,  is_numeric => 0,  type => 'varchar(60)', default => ''},
         Creator => 
@@ -287,22 +283,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::ScripCondition_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripCondition_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripCondition_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripCondition_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripCondition_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripCondition_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/ScripConditions.pm b/lib/RT/ScripConditions.pm
index 020c394..1cd6551 100755
--- a/lib/RT/ScripConditions.pm
+++ b/lib/RT/ScripConditions.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::ScripConditions;
 
-use RT::SearchBuilder;
 use RT::ScripCondition;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::ScripCondition->new($self->CurrentUser));
 }
 
-        eval "require RT::ScripConditions_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripConditions_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripConditions_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripConditions_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::ScripConditions_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/ScripConditions_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Scrips.pm b/lib/RT/Scrips.pm
index 048d488..54fa5e9 100755
--- a/lib/RT/Scrips.pm
+++ b/lib/RT/Scrips.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Scrips;
 
-use RT::SearchBuilder;
 use RT::Scrip;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Scrip->new($self->CurrentUser));
 }
 
-        eval "require RT::Scrips_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Scrips_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Scrips_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Scrips_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Scrips_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Scrips_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Template.pm b/lib/RT/Template.pm
index b3f5c7d..026f765 100755
--- a/lib/RT/Template.pm
+++ b/lib/RT/Template.pm
@@ -69,12 +69,8 @@ RT::Template
 =cut
 
 package RT::Template;
-use RT::Record; 
 use RT::Queue;
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -97,7 +93,7 @@ Create takes a hash of values and creates a row in the database:
   varchar(16) 'Type'.
   varchar(16) 'Language'.
   int(11) 'TranslationOf'.
-  blob 'Content'.
+  text 'Content'.
 
 =cut
 
@@ -264,7 +260,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Content
 
 Returns the current value of Content. 
-(In the database, Content is stored as blob.)
+(In the database, Content is stored as text.)
 
 
 
@@ -273,7 +269,7 @@ Returns the current value of Content.
 
 Set Content to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Content will be stored as a blob.)
+(In the database, Content will be stored as a text.)
 
 
 =cut
@@ -334,7 +330,7 @@ sub _CoreAccessible {
         TranslationOf => 
 		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Content => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'blob', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'text', default => ''},
         LastUpdated => 
 		{read => 1, auto => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         LastUpdatedBy => 
@@ -348,22 +344,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Template_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Template_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Template_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Template_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Template_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Template_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Templates.pm b/lib/RT/Templates.pm
index da31572..bc358f7 100755
--- a/lib/RT/Templates.pm
+++ b/lib/RT/Templates.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Templates;
 
-use RT::SearchBuilder;
 use RT::Template;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Template->new($self->CurrentUser));
 }
 
-        eval "require RT::Templates_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Templates_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Templates_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Templates_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Templates_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Templates_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Ticket.pm b/lib/RT/Ticket.pm
index d98edb5..9e9cfda 100755
--- a/lib/RT/Ticket.pm
+++ b/lib/RT/Ticket.pm
@@ -69,12 +69,8 @@ RT::Ticket
 =cut
 
 package RT::Ticket;
-use RT::Record; 
 use RT::Queue;
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -141,7 +137,7 @@ sub Create {
                 Resolved => '',
                 Disabled => '0',
 
-          @_);
+		  @_);
     $self->SUPER::Create(
                          EffectiveId => $args{'EffectiveId'},
                          Queue => $args{'Queue'},
@@ -222,14 +218,12 @@ Returns the Queue Object which has the id returned by Queue
 =cut
 
 sub QueueObj {
-    my $self = shift;
-    my $Queue =  RT::Queue->new($self->CurrentUser);
-    $Queue->Load($self->__Value('Queue'));
-    return($Queue);
+	my $self = shift;
+	my $Queue =  RT::Queue->new($self->CurrentUser);
+	$Queue->Load($self->__Value('Queue'));
+	return($Queue);
 }
 
-
-
 =head2 Type
 
 Returns the current value of Type. 
@@ -595,76 +589,62 @@ sub _CoreAccessible {
     {
      
         id =>
-        {read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
+		{read => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => ''},
         EffectiveId => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Queue => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Type => 
-        {read => 1, write => 1, sql_type => 12, length => 16,  is_blob => 0,  is_numeric => 0,  type => 'varchar(16)', default => ''},
+		{read => 1, write => 1, sql_type => 12, length => 16,  is_blob => 0,  is_numeric => 0,  type => 'varchar(16)', default => ''},
         IssueStatement => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Resolution => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Owner => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Subject => 
-        {read => 1, write => 1, sql_type => 12, length => 200,  is_blob => 0,  is_numeric => 0,  type => 'varchar(200)', default => '[no subject]'},
+		{read => 1, write => 1, sql_type => 12, length => 200,  is_blob => 0,  is_numeric => 0,  type => 'varchar(200)', default => '[no subject]'},
         InitialPriority => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         FinalPriority => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Priority => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         TimeEstimated => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         TimeWorked => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Status => 
-        {read => 1, write => 1, sql_type => 12, length => 10,  is_blob => 0,  is_numeric => 0,  type => 'varchar(10)', default => ''},
+		{read => 1, write => 1, sql_type => 12, length => 10,  is_blob => 0,  is_numeric => 0,  type => 'varchar(10)', default => ''},
         TimeLeft => 
-        {read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, write => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Told => 
-        {read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         Starts => 
-        {read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         Started => 
-        {read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         Due => 
-        {read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         Resolved => 
-        {read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, write => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         LastUpdatedBy => 
-        {read => 1, auto => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, auto => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         LastUpdated => 
-        {read => 1, auto => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, auto => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         Creator => 
-        {read => 1, auto => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
+		{read => 1, auto => 1, sql_type => 4, length => 11,  is_blob => 0,  is_numeric => 1,  type => 'int(11)', default => '0'},
         Created => 
-        {read => 1, auto => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
+		{read => 1, auto => 1, sql_type => 11, length => 0,  is_blob => 0,  is_numeric => 0,  type => 'datetime', default => ''},
         Disabled => 
-        {read => 1, write => 1, sql_type => 5, length => 6,  is_blob => 0,  is_numeric => 1,  type => 'smallint(6)', default => '0'},
+		{read => 1, write => 1, sql_type => 5, length => 6,  is_blob => 0,  is_numeric => 1,  type => 'smallint(6)', default => '0'},
 
  }
 };
 
 
-        eval "require RT::Ticket_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Ticket_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Ticket_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Ticket_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Ticket_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Ticket_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index 3dcd466..d98c95c 100755
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Tickets;
 
-use RT::SearchBuilder;
 use RT::Ticket;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Ticket->new($self->CurrentUser));
 }
 
-        eval "require RT::Tickets_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Tickets_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Tickets_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Tickets_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Tickets_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Tickets_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Transaction.pm b/lib/RT/Transaction.pm
index 5e84ce3..e9ae434 100755
--- a/lib/RT/Transaction.pm
+++ b/lib/RT/Transaction.pm
@@ -69,11 +69,7 @@ RT::Transaction
 =cut
 
 package RT::Transaction;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -403,22 +399,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::Transaction_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Transaction_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Transaction_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Transaction_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Transaction_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Transaction_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Transactions.pm b/lib/RT/Transactions.pm
index 617045f..444ce53 100755
--- a/lib/RT/Transactions.pm
+++ b/lib/RT/Transactions.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Transactions;
 
-use RT::SearchBuilder;
 use RT::Transaction;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::Transaction->new($self->CurrentUser));
 }
 
-        eval "require RT::Transactions_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Transactions_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Transactions_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Transactions_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Transactions_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Transactions_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/User.pm b/lib/RT/User.pm
index 94ae222..c359595 100755
--- a/lib/RT/User.pm
+++ b/lib/RT/User.pm
@@ -69,11 +69,7 @@ RT::User
 =cut
 
 package RT::User;
-use RT::Record; 
-
-
-use vars qw( @ISA );
- at ISA= qw( RT::Record );
+use base 'RT::Record';
 
 sub _Init {
   my $self = shift; 
@@ -91,11 +87,11 @@ sub _Init {
 Create takes a hash of values and creates a row in the database:
 
   varchar(200) 'Name'.
-  varchar(40) 'Password'.
-  blob 'Comments'.
-  blob 'Signature'.
+  varbinary(40) 'Password'.
+  text 'Comments'.
+  text 'Signature'.
   varchar(120) 'EmailAddress'.
-  blob 'FreeformContactInfo'.
+  text 'FreeformContactInfo'.
   varchar(200) 'Organization'.
   varchar(120) 'RealName'.
   varchar(16) 'NickName'.
@@ -225,7 +221,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Password
 
 Returns the current value of Password. 
-(In the database, Password is stored as varchar(40).)
+(In the database, Password is stored as varbinary(40).)
 
 
 
@@ -234,7 +230,7 @@ Returns the current value of Password.
 
 Set Password to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Password will be stored as a varchar(40).)
+(In the database, Password will be stored as a varbinary(40).)
 
 
 =cut
@@ -243,7 +239,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Comments
 
 Returns the current value of Comments. 
-(In the database, Comments is stored as blob.)
+(In the database, Comments is stored as text.)
 
 
 
@@ -252,7 +248,7 @@ Returns the current value of Comments.
 
 Set Comments to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Comments will be stored as a blob.)
+(In the database, Comments will be stored as a text.)
 
 
 =cut
@@ -261,7 +257,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 Signature
 
 Returns the current value of Signature. 
-(In the database, Signature is stored as blob.)
+(In the database, Signature is stored as text.)
 
 
 
@@ -270,7 +266,7 @@ Returns the current value of Signature.
 
 Set Signature to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, Signature will be stored as a blob.)
+(In the database, Signature will be stored as a text.)
 
 
 =cut
@@ -297,7 +293,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
 =head2 FreeformContactInfo
 
 Returns the current value of FreeformContactInfo. 
-(In the database, FreeformContactInfo is stored as blob.)
+(In the database, FreeformContactInfo is stored as text.)
 
 
 
@@ -306,7 +302,7 @@ Returns the current value of FreeformContactInfo.
 
 Set FreeformContactInfo to VALUE. 
 Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
-(In the database, FreeformContactInfo will be stored as a blob.)
+(In the database, FreeformContactInfo will be stored as a text.)
 
 
 =cut
@@ -771,15 +767,15 @@ sub _CoreAccessible {
         Name => 
 		{read => 1, write => 1, sql_type => 12, length => 200,  is_blob => 0,  is_numeric => 0,  type => 'varchar(200)', default => ''},
         Password => 
-		{read => 1, write => 1, sql_type => 12, length => 40,  is_blob => 0,  is_numeric => 0,  type => 'varchar(40)', default => ''},
+		{read => 1, write => 1, sql_type => 12, length => 40,  is_blob => 0,  is_numeric => 0,  type => 'varbinary(40)', default => ''},
         Comments => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'blob', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'text', default => ''},
         Signature => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'blob', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'text', default => ''},
         EmailAddress => 
 		{read => 1, write => 1, sql_type => 12, length => 120,  is_blob => 0,  is_numeric => 0,  type => 'varchar(120)', default => ''},
         FreeformContactInfo => 
-		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'blob', default => ''},
+		{read => 1, write => 1, sql_type => -4, length => 0,  is_blob => 1,  is_numeric => 0,  type => 'text', default => ''},
         Organization => 
 		{read => 1, write => 1, sql_type => 12, length => 200,  is_blob => 0,  is_numeric => 0,  type => 'varchar(200)', default => ''},
         RealName => 
@@ -839,22 +835,8 @@ sub _CoreAccessible {
 };
 
 
-        eval "require RT::User_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/User_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::User_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/User_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::User_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/User_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO
diff --git a/lib/RT/Users.pm b/lib/RT/Users.pm
index d3eb078..025767f 100755
--- a/lib/RT/Users.pm
+++ b/lib/RT/Users.pm
@@ -72,11 +72,9 @@ use strict;
 
 package RT::Users;
 
-use RT::SearchBuilder;
 use RT::User;
 
-use vars qw( @ISA );
- at ISA= qw(RT::SearchBuilder);
+use base 'RT::SearchBuilder';
 
 
 sub _Init {
@@ -100,22 +98,8 @@ sub NewItem {
     return(RT::User->new($self->CurrentUser));
 }
 
-        eval "require RT::Users_Overlay";
-        if ($@ && $@ !~ qr{^Can't locate RT/Users_Overlay.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Users_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Users_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Users_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Users_Local.pm}) {
-            die $@;
-        };
-
 
+RT::Base->_ImportOverlays();
 
 
 =head1 SEE ALSO

commit 28b671deed51459673209701e1e12b2d5c0ca84b
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:12:44 2010 -0400

    Remove yet-still-more string eval overlay loads

diff --git a/lib/RT/Action.pm b/lib/RT/Action.pm
index 2197fd1..8b72687 100755
--- a/lib/RT/Action.pm
+++ b/lib/RT/Action.pm
@@ -219,9 +219,6 @@ sub DESTROY {
 
 # }}}
 
-eval "require RT::Action_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action_Vendor.pm});
-eval "require RT::Action_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/AutoOpen.pm b/lib/RT/Action/AutoOpen.pm
index db373d9..96a7a72 100755
--- a/lib/RT/Action/AutoOpen.pm
+++ b/lib/RT/Action/AutoOpen.pm
@@ -120,9 +120,6 @@ sub Commit {
     return 1;
 }
 
-eval "require RT::Action::AutoOpen_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/AutoOpen_Vendor.pm});
-eval "require RT::Action::AutoOpen_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/AutoOpen_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/Autoreply.pm b/lib/RT/Action/Autoreply.pm
index e7af0f8..6f27eea 100755
--- a/lib/RT/Action/Autoreply.pm
+++ b/lib/RT/Action/Autoreply.pm
@@ -127,9 +127,6 @@ sub SetRTSpecialHeaders {
 
 # }}}
 
-eval "require RT::Action::Autoreply_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Vendor.pm});
-eval "require RT::Action::Autoreply_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/CreateTickets.pm b/lib/RT/Action/CreateTickets.pm
index 04d93a0..7ff5fc2 100755
--- a/lib/RT/Action/CreateTickets.pm
+++ b/lib/RT/Action/CreateTickets.pm
@@ -1239,10 +1239,7 @@ sub PostProcess {
 
 }
 
-eval "require RT::Action::CreateTickets_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/CreateTickets_Vendor.pm} );
-eval "require RT::Action::CreateTickets_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/CreateTickets_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/EscalatePriority.pm b/lib/RT/Action/EscalatePriority.pm
index 7135b82..f50c5c4 100755
--- a/lib/RT/Action/EscalatePriority.pm
+++ b/lib/RT/Action/EscalatePriority.pm
@@ -161,9 +161,6 @@ sub Commit {
    }
 }
 
-eval "require RT::Action::EscalatePriority_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/EscalatePriority_Vendor.pm});
-eval "require RT::Action::EscalatePriority_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/EscalatePriority_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/ExtractSubjectTag.pm b/lib/RT/Action/ExtractSubjectTag.pm
index f8dc1fb..0ff8562 100644
--- a/lib/RT/Action/ExtractSubjectTag.pm
+++ b/lib/RT/Action/ExtractSubjectTag.pm
@@ -90,14 +90,6 @@ sub Commit {
     return (1);
 }
 
-eval "require RT::Action::ExtractSubjectTag_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/ExtractSubjectTag_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Action::ExtractSubjectTag_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/ExtractSubjectTag_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/LinearEscalate.pm b/lib/RT/Action/LinearEscalate.pm
index efdbf31..c1f6c7a 100755
--- a/lib/RT/Action/LinearEscalate.pm
+++ b/lib/RT/Action/LinearEscalate.pm
@@ -263,10 +263,7 @@ sub Commit {
     return 1;
 }
 
-eval "require RT::Action::LinearEscalate_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/LinearEscalate_Vendor.pm} );
-eval "require RT::Action::LinearEscalate_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/LinearEscalate_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/Notify.pm b/lib/RT/Action/Notify.pm
index f086d54..bf1e179 100755
--- a/lib/RT/Action/Notify.pm
+++ b/lib/RT/Action/Notify.pm
@@ -162,9 +162,6 @@ sub SetRecipients {
 
 }
 
-eval "require RT::Action::Notify_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Vendor.pm});
-eval "require RT::Action::Notify_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/NotifyAsComment.pm b/lib/RT/Action/NotifyAsComment.pm
index ff04c8a..de10add 100755
--- a/lib/RT/Action/NotifyAsComment.pm
+++ b/lib/RT/Action/NotifyAsComment.pm
@@ -70,9 +70,6 @@ sub SetReturnAddress {
     return $self->SUPER::SetReturnAddress( @_, is_comment => 1 );
 }
 
-eval "require RT::Action::NotifyAsComment_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyAsComment_Vendor.pm});
-eval "require RT::Action::NotifyAsComment_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyAsComment_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/NotifyGroup.pm b/lib/RT/Action/NotifyGroup.pm
index d16e51c..dcd9d81 100644
--- a/lib/RT/Action/NotifyGroup.pm
+++ b/lib/RT/Action/NotifyGroup.pm
@@ -201,14 +201,6 @@ L<RT::Action::NotifyGroupAsComment>, F<rt-email-group-admin>
 
 =cut
 
-eval "require RT::Action::NotifyGroup_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroup_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Action::NotifyGroup_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroup_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/NotifyGroupAsComment.pm b/lib/RT/Action/NotifyGroupAsComment.pm
index eb54c8a..0cc63fa 100644
--- a/lib/RT/Action/NotifyGroupAsComment.pm
+++ b/lib/RT/Action/NotifyGroupAsComment.pm
@@ -78,14 +78,6 @@ Ruslan U. Zakirov E<lt>ruz at bestpractical.comE<gt>
 
 =cut
 
-eval "require RT::Action::NotifyGroupAsComment_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroupAsComment_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Action::NotifyGroupAsComment_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyGroupAsComment_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/RecordComment.pm b/lib/RT/Action/RecordComment.pm
index 51455ff..2704610 100644
--- a/lib/RT/Action/RecordComment.pm
+++ b/lib/RT/Action/RecordComment.pm
@@ -111,9 +111,6 @@ sub CreateTransaction {
 }
     
 
-eval "require RT::Action::RecordComment_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordComment_Vendor.pm});
-eval "require RT::Action::RecordComment_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordComment_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/RecordCorrespondence.pm b/lib/RT/Action/RecordCorrespondence.pm
index 8901832..ad1a6b4 100644
--- a/lib/RT/Action/RecordCorrespondence.pm
+++ b/lib/RT/Action/RecordCorrespondence.pm
@@ -112,9 +112,6 @@ sub CreateTransaction {
 }
     
 
-eval "require RT::Action::RecordCorrespondence_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordCorrespondence_Vendor.pm});
-eval "require RT::Action::RecordCorrespondence_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RecordCorrespondence_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/ResolveMembers.pm b/lib/RT/Action/ResolveMembers.pm
index 699c62b..3351a8c 100755
--- a/lib/RT/Action/ResolveMembers.pm
+++ b/lib/RT/Action/ResolveMembers.pm
@@ -102,10 +102,7 @@ sub IsApplicable  {
 }
 # }}}
 
-eval "require RT::Action::ResolveMembers_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/ResolveMembers_Vendor.pm});
-eval "require RT::Action::ResolveMembers_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/ResolveMembers_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/SendEmail.pm b/lib/RT/Action/SendEmail.pm
index 614c5db..c33a19a 100755
--- a/lib/RT/Action/SendEmail.pm
+++ b/lib/RT/Action/SendEmail.pm
@@ -1091,10 +1091,7 @@ sub MIMEEncodeString {
     return RT::Interface::Email::EncodeToMIME( String => $_[0], Charset => $_[1] );
 }
 
-eval "require RT::Action::SendEmail_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Vendor.pm} );
-eval "require RT::Action::SendEmail_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Action/SetPriority.pm b/lib/RT/Action/SetPriority.pm
index eeb1a65..2668ff0 100755
--- a/lib/RT/Action/SetPriority.pm
+++ b/lib/RT/Action/SetPriority.pm
@@ -76,9 +76,6 @@ sub Commit {
 
 }
 
-eval "require RT::Action::SetPriority_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SetPriority_Vendor.pm});
-eval "require RT::Action::SetPriority_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SetPriority_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Action/UserDefined.pm b/lib/RT/Action/UserDefined.pm
index 6736c0a..c41623c 100755
--- a/lib/RT/Action/UserDefined.pm
+++ b/lib/RT/Action/UserDefined.pm
@@ -83,10 +83,7 @@ sub Commit {
     return ($retval);
 }
 
-eval "require RT::Action::UserDefined_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/UserDefined_Vendor.pm});
-eval "require RT::Action::UserDefined_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/UserDefined_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Approval.pm b/lib/RT/Approval.pm
index 8745bc5..49242cf 100644
--- a/lib/RT/Approval.pm
+++ b/lib/RT/Approval.pm
@@ -61,14 +61,6 @@ RT::Ruleset->Add(
         'RT::Approval::Rule::Created',
     ]);
 
-eval "require RT::Approval_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Approval_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Approval/Rule.pm b/lib/RT/Approval/Rule.pm
index 21c62b2..673d5c8 100644
--- a/lib/RT/Approval/Rule.pm
+++ b/lib/RT/Approval/Rule.pm
@@ -75,15 +75,7 @@ sub GetTemplate {
     return $template;
 }
 
-eval "require RT::Approval::Rule_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval/Rule_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Approval::Rule_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Approval/Rule_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition.pm b/lib/RT/Condition.pm
index 8918a18..0e871b6 100755
--- a/lib/RT/Condition.pm
+++ b/lib/RT/Condition.pm
@@ -225,9 +225,6 @@ sub DESTROY {
 
 # }}}
 
-eval "require RT::Condition_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition_Vendor.pm});
-eval "require RT::Condition_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/AnyTransaction.pm b/lib/RT/Condition/AnyTransaction.pm
index dd0bd34..526a2bd 100755
--- a/lib/RT/Condition/AnyTransaction.pm
+++ b/lib/RT/Condition/AnyTransaction.pm
@@ -63,10 +63,7 @@ sub IsApplicable {
     return(1);
 }
 
-eval "require RT::Condition::AnyTransaction_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/AnyTransaction_Vendor.pm});
-eval "require RT::Condition::AnyTransaction_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/AnyTransaction_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/BeforeDue.pm b/lib/RT/Condition/BeforeDue.pm
index aaf59af..dbfb987 100755
--- a/lib/RT/Condition/BeforeDue.pm
+++ b/lib/RT/Condition/BeforeDue.pm
@@ -78,9 +78,6 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::BeforeDue_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/BeforeDue_Vendor.pm});
-eval "require RT::Condition::BeforeDue_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/BeforeDue_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/CloseTicket.pm b/lib/RT/Condition/CloseTicket.pm
index e72d36e..ec4b4ce 100644
--- a/lib/RT/Condition/CloseTicket.pm
+++ b/lib/RT/Condition/CloseTicket.pm
@@ -76,9 +76,6 @@ sub IsApplicable {
     return 1;
 }
 
-eval "require RT::Condition::CloseTicket_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/CloseTicket_Vendor.pm});
-eval "require RT::Condition::CloseTicket_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/CloseTicket_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/Overdue.pm b/lib/RT/Condition/Overdue.pm
index 61809b4..7f2f7e6 100755
--- a/lib/RT/Condition/Overdue.pm
+++ b/lib/RT/Condition/Overdue.pm
@@ -78,10 +78,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::Overdue_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Overdue_Vendor.pm});
-eval "require RT::Condition::Overdue_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Overdue_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/OwnerChange.pm b/lib/RT/Condition/OwnerChange.pm
index b89599e..37bede9 100755
--- a/lib/RT/Condition/OwnerChange.pm
+++ b/lib/RT/Condition/OwnerChange.pm
@@ -69,10 +69,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::OwnerChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/OwnerChange_Vendor.pm});
-eval "require RT::Condition::OwnerChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/OwnerChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/PriorityChange.pm b/lib/RT/Condition/PriorityChange.pm
index 8773765..b20c278 100644
--- a/lib/RT/Condition/PriorityChange.pm
+++ b/lib/RT/Condition/PriorityChange.pm
@@ -68,10 +68,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::PriorityChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityChange_Vendor.pm});
-eval "require RT::Condition::PriorityChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/PriorityExceeds.pm b/lib/RT/Condition/PriorityExceeds.pm
index c512fe9..97d1e99 100755
--- a/lib/RT/Condition/PriorityExceeds.pm
+++ b/lib/RT/Condition/PriorityExceeds.pm
@@ -66,10 +66,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::PriorityExceeds_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityExceeds_Vendor.pm});
-eval "require RT::Condition::PriorityExceeds_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityExceeds_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/QueueChange.pm b/lib/RT/Condition/QueueChange.pm
index 793e8c3..ff1c76f 100755
--- a/lib/RT/Condition/QueueChange.pm
+++ b/lib/RT/Condition/QueueChange.pm
@@ -66,10 +66,7 @@ sub IsApplicable {
     }
 }
 
-eval "require RT::Condition::QueueChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/QueueChange_Vendor.pm});
-eval "require RT::Condition::QueueChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/QueueChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/ReopenTicket.pm b/lib/RT/Condition/ReopenTicket.pm
index 1a6b947..8e973e3 100644
--- a/lib/RT/Condition/ReopenTicket.pm
+++ b/lib/RT/Condition/ReopenTicket.pm
@@ -81,9 +81,6 @@ sub IsApplicable {
     return 1;
 }
 
-eval "require RT::Condition::ReopenTicket_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/ReopenTicket_Vendor.pm});
-eval "require RT::Condition::ReopenTicket_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/ReopenTicket_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Condition/StatusChange.pm b/lib/RT/Condition/StatusChange.pm
index bb3b8eb..4f19a41 100755
--- a/lib/RT/Condition/StatusChange.pm
+++ b/lib/RT/Condition/StatusChange.pm
@@ -136,10 +136,7 @@ sub IsApplicable {
     return 1;
 }
 
-eval "require RT::Condition::StatusChange_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/StatusChange_Vendor.pm});
-eval "require RT::Condition::StatusChange_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/StatusChange_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Condition/UserDefined.pm b/lib/RT/Condition/UserDefined.pm
index dfe1cee..6e69b0f 100755
--- a/lib/RT/Condition/UserDefined.pm
+++ b/lib/RT/Condition/UserDefined.pm
@@ -68,10 +68,7 @@ sub IsApplicable {
     return ($retval);
 }
 
-eval "require RT::Condition::UserDefined_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/UserDefined_Vendor.pm});
-eval "require RT::Condition::UserDefined_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/UserDefined_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Config.pm b/lib/RT/Config.pm
index b74faac..b1ce131 100644
--- a/lib/RT/Config.pm
+++ b/lib/RT/Config.pm
@@ -1082,14 +1082,6 @@ sub UpdateOption {
     return 1;
 }
 
-eval "require RT::Config_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Config_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Config_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Config_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Crypt/GnuPG.pm b/lib/RT/Crypt/GnuPG.pm
index d6dea42..3d9c81d 100644
--- a/lib/RT/Crypt/GnuPG.pm
+++ b/lib/RT/Crypt/GnuPG.pm
@@ -2463,15 +2463,7 @@ sub _make_gpg_handles {
     return ($handles, \%handle_map);
 }
 
-eval "require RT::Crypt::GnuPG_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Crypt/GnuPG_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Crypt::GnuPG_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Crypt/GnuPG_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 # helper package to avoid using temp file
 package IO::Handle::CRLF;
diff --git a/lib/RT/CurrentUser.pm b/lib/RT/CurrentUser.pm
index fa0b98b..a506b9e 100755
--- a/lib/RT/CurrentUser.pm
+++ b/lib/RT/CurrentUser.pm
@@ -311,9 +311,6 @@ sub Authenticate {
     return ($password eq $auth_digest);
 }
 
-eval "require RT::CurrentUser_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Vendor.pm});
-eval "require RT::CurrentUser_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/CustomFieldValues/External.pm b/lib/RT/CustomFieldValues/External.pm
index fcba8bf..ec60928 100644
--- a/lib/RT/CustomFieldValues/External.pm
+++ b/lib/RT/CustomFieldValues/External.pm
@@ -222,14 +222,6 @@ sub LimitToCustomField {
     return $self->SUPER::LimitToCustomField( @_ );
 }
 
-eval "require RT::CustomFieldValues::External_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/External_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::CustomFieldValues::External_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/External_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/CustomFieldValues/Groups.pm b/lib/RT/CustomFieldValues/Groups.pm
index 91de36d..01022c8 100644
--- a/lib/RT/CustomFieldValues/Groups.pm
+++ b/lib/RT/CustomFieldValues/Groups.pm
@@ -75,14 +75,6 @@ sub ExternalValues {
     return \@res;
 }
 
-eval "require RT::CustomFieldValues::Groups_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/Groups_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::CustomFieldValues::Groups_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues/Groups_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Dashboard.pm b/lib/RT/Dashboard.pm
index b98501d..401933a 100644
--- a/lib/RT/Dashboard.pm
+++ b/lib/RT/Dashboard.pm
@@ -330,9 +330,6 @@ sub CurrentUserCanSubscribe {
     $self->_CurrentUserCan($privacy, FullRight => 'SubscribeDashboard');
 }
 
-eval "require RT::Dashboard_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Dashboard_Vendor.pm});
-eval "require RT::Dashboard_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Dashboard_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Date.pm b/lib/RT/Date.pm
index 86487eb..c3890f9 100755
--- a/lib/RT/Date.pm
+++ b/lib/RT/Date.pm
@@ -1042,9 +1042,6 @@ sub Timezone {
 }
 
 
-eval "require RT::Date_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Date_Vendor.pm});
-eval "require RT::Date_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Date_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/EmailParser.pm b/lib/RT/EmailParser.pm
index 6e33c10..3954a5c 100755
--- a/lib/RT/EmailParser.pm
+++ b/lib/RT/EmailParser.pm
@@ -629,9 +629,6 @@ sub DESTROY {
 
 
 
-eval "require RT::EmailParser_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/EmailParser_Vendor.pm});
-eval "require RT::EmailParser_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/EmailParser_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Handle.pm b/lib/RT/Handle.pm
index ffdaec5..0d5cb3a 100755
--- a/lib/RT/Handle.pm
+++ b/lib/RT/Handle.pm
@@ -1060,9 +1060,6 @@ sub ACLEquivGroupId {
 
 __PACKAGE__->FinalizeDatabaseType;
 
-eval "require RT::Handle_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Vendor.pm});
-eval "require RT::Handle_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/I18N.pm b/lib/RT/I18N.pm
index 5bd6f62..6dbda4a 100755
--- a/lib/RT/I18N.pm
+++ b/lib/RT/I18N.pm
@@ -572,10 +572,7 @@ sub SetMIMEHeadToEncoding {
 }
 # }}}
 
-eval "require RT::I18N_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N_Vendor.pm});
-eval "require RT::I18N_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;  # End of module.
 
diff --git a/lib/RT/I18N/i_default.pm b/lib/RT/I18N/i_default.pm
index 293f656..6ac7cf4 100755
--- a/lib/RT/I18N/i_default.pm
+++ b/lib/RT/I18N/i_default.pm
@@ -50,10 +50,7 @@ package RT::I18N::i_default;
 use base 'RT::I18N';
 use strict;
 
-eval "require RT::I18N::i_default_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N/i_default_Vendor.pm});
-eval "require RT::I18N::i_default_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N/i_default_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Installer.pm b/lib/RT/Installer.pm
index aa89140..26786e4 100644
--- a/lib/RT/Installer.pm
+++ b/lib/RT/Installer.pm
@@ -326,15 +326,7 @@ C<RT::Installer> class provides access to RT Installer Meta
 
 =cut
 
-eval "require RT::Installer_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Installer_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Installer_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Installer_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Interface/CLI.pm b/lib/RT/Interface/CLI.pm
index 2eb009a..2a97095 100755
--- a/lib/RT/Interface/CLI.pm
+++ b/lib/RT/Interface/CLI.pm
@@ -256,9 +256,6 @@ sub debug {
 # }}}
 
 
-eval "require RT::Interface::CLI_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/CLI_Vendor.pm});
-eval "require RT::Interface::CLI_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/CLI_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Email.pm b/lib/RT/Interface/Email.pm
index b10405a..e8052b1 100755
--- a/lib/RT/Interface/Email.pm
+++ b/lib/RT/Interface/Email.pm
@@ -1808,9 +1808,6 @@ sub _RecordSendEmailFailure {
     }
 }
 
-eval "require RT::Interface::Email_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Vendor.pm} );
-eval "require RT::Interface::Email_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Email/Auth/GnuPG.pm b/lib/RT/Interface/Email/Auth/GnuPG.pm
index 0e0ed38..b9787c5 100644
--- a/lib/RT/Interface/Email/Auth/GnuPG.pm
+++ b/lib/RT/Interface/Email/Auth/GnuPG.pm
@@ -250,14 +250,7 @@ sub VerifyDecrypt {
     return $status, @res, @nested;
 }
 
-eval "require RT::Interface::Email::Auth::GnuPG_Vendor";
-die $@
-  if ( $@
-    && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/GnuPG_Vendor.pm} );
-eval "require RT::Interface::Email::Auth::GnuPG_Local";
-die $@
-  if ( $@
-    && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/GnuPG_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Interface/Email/Auth/MailFrom.pm b/lib/RT/Interface/Email/Auth/MailFrom.pm
index 56c0fe9..06b0b93 100755
--- a/lib/RT/Interface/Email/Auth/MailFrom.pm
+++ b/lib/RT/Interface/Email/Auth/MailFrom.pm
@@ -174,9 +174,6 @@ sub GetCurrentUser {
     return ( $CurrentUser, 1 );
 }
 
-eval "require RT::Interface::Email::Auth::MailFrom_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/MailFrom_Vendor.pm});
-eval "require RT::Interface::Email::Auth::MailFrom_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/MailFrom_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Email/Filter/SpamAssassin.pm b/lib/RT/Interface/Email/Filter/SpamAssassin.pm
index d7f2e38..c6200b2 100755
--- a/lib/RT/Interface/Email/Filter/SpamAssassin.pm
+++ b/lib/RT/Interface/Email/Filter/SpamAssassin.pm
@@ -90,9 +90,6 @@ the floor; otherwise, it is passed on as normal.
 
 =cut
 
-eval "require RT::Interface::Email::Filter::SpamAssassin_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Filter/SpamAssassin_Vendor.pm});
-eval "require RT::Interface::Email::Filter::SpamAssassin_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Filter/SpamAssassin_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/REST.pm b/lib/RT/Interface/REST.pm
index 75606c6..a89416b 100755
--- a/lib/RT/Interface/REST.pm
+++ b/lib/RT/Interface/REST.pm
@@ -306,15 +306,7 @@ sub vsplit {
     return \@words;
 }
 
-eval "require RT::Interface::REST_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Interface/REST_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Interface::REST_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Interface/REST_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
 
diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index 7a76799..75c83dd 100755
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -2125,9 +2125,6 @@ sub _parse_saved_search {
     return ( _load_container_object( $obj_type, $obj_id ), $search_id );
 }
 
-eval "require RT::Interface::Web_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Web_Vendor.pm} );
-eval "require RT::Interface::Web_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Web_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Web/QueryBuilder.pm b/lib/RT/Interface/Web/QueryBuilder.pm
index a2d089a..13dd9bf 100755
--- a/lib/RT/Interface/Web/QueryBuilder.pm
+++ b/lib/RT/Interface/Web/QueryBuilder.pm
@@ -51,9 +51,6 @@ package RT::Interface::Web::QueryBuilder;
 use strict;
 use warnings;
 
-eval "require RT::Interface::Web::QueryBuilder_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder_Vendor.pm});
-eval "require RT::Interface::Web::QueryBuilder_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Interface/Web/QueryBuilder/Tree.pm b/lib/RT/Interface/Web/QueryBuilder/Tree.pm
index 78d526b..9adde9e 100755
--- a/lib/RT/Interface/Web/QueryBuilder/Tree.pm
+++ b/lib/RT/Interface/Web/QueryBuilder/Tree.pm
@@ -285,9 +285,6 @@ sub ParseSQL {
     return @results;
 }
 
-eval "require RT::Interface::Web::QueryBuilder::Tree_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder/Tree_Vendor.pm});
-eval "require RT::Interface::Web::QueryBuilder::Tree_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web/QueryBuilder/Tree_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Plugin.pm b/lib/RT/Plugin.pm
index 58ad5b9..9f9e402 100644
--- a/lib/RT/Plugin.pm
+++ b/lib/RT/Plugin.pm
@@ -128,14 +128,6 @@ Returns the directory this plugin has installed its message catalogs into.
 
 sub PoDir { return $_[0]->Path('po') }
 
-eval "require RT::Plugin_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Plugin_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Plugin_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Plugin_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 0fffe4c..022767e 100755
--- a/lib/RT/Record.pm
+++ b/lib/RT/Record.pm
@@ -1979,9 +1979,6 @@ sub WikiBase {
     return RT->Config->Get('WebPath'). "/index.html?q=";
 }
 
-eval "require RT::Record_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Record_Vendor.pm});
-eval "require RT::Record_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Record_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Reminders.pm b/lib/RT/Reminders.pm
index c5f71d3..5d3d81c 100644
--- a/lib/RT/Reminders.pm
+++ b/lib/RT/Reminders.pm
@@ -155,15 +155,7 @@ sub Resolve {
                                    NewValue => $reminder->id);
 }
 
-    eval "require RT::Reminders_Vendor";
-        if ($@ && $@ !~ qr{^Can't locate RT/Reminders_Vendor.pm}) {
-            die $@;
-        };
-
-        eval "require RT::Reminders_Local";
-        if ($@ && $@ !~ qr{^Can't locate RT/Reminders_Local.pm}) {
-            die $@;
-        };
+    RT::Base->_ImportOverlays();
 
 
 1;
diff --git a/lib/RT/Report/Tickets.pm b/lib/RT/Report/Tickets.pm
index 4d8d193..ef1a7b1 100644
--- a/lib/RT/Report/Tickets.pm
+++ b/lib/RT/Report/Tickets.pm
@@ -324,14 +324,6 @@ sub AddEmptyRows {
     }
 }
 
-eval "require RT::Report::Tickets_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Report::Tickets_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Report/Tickets/Entry.pm b/lib/RT/Report/Tickets/Entry.pm
index 249dc89..fab2cd6 100644
--- a/lib/RT/Report/Tickets/Entry.pm
+++ b/lib/RT/Report/Tickets/Entry.pm
@@ -79,14 +79,6 @@ sub LabelValue {
     return $value;
 }
 
-eval "require RT::Report::Tickets::Entry_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets/Entry_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Report::Tickets::Entry_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Report/Tickets/Entry_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Rule.pm b/lib/RT/Rule.pm
index eab8a3a..e3b9cb7 100644
--- a/lib/RT/Rule.pm
+++ b/lib/RT/Rule.pm
@@ -113,14 +113,6 @@ sub RunScripAction {
 
 }
 
-eval "require RT::Rule_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Rule_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Rule_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Rule_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Ruleset.pm b/lib/RT/Ruleset.pm
index 9fe7472..0b441d6 100644
--- a/lib/RT/Ruleset.pm
+++ b/lib/RT/Ruleset.pm
@@ -81,14 +81,6 @@ sub Add {
     push @RULE_SETS, $class->new(\%args);
 }
 
-eval "require RT::Ruleset_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Ruleset_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Ruleset_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Ruleset_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SQL.pm b/lib/RT/SQL.pm
index 799cf94..890aaa6 100644
--- a/lib/RT/SQL.pm
+++ b/lib/RT/SQL.pm
@@ -289,14 +289,6 @@ sub PossibleCustomFields {
 }
 
 
-eval "require RT::SQL_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/SQL_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::SQL_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/SQL_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SavedSearch.pm b/lib/RT/SavedSearch.pm
index 19ed02a..a185eba 100644
--- a/lib/RT/SavedSearch.pm
+++ b/lib/RT/SavedSearch.pm
@@ -144,9 +144,6 @@ sub _PrivacyObjects {
     return ( $CurrentUser->UserObj, @{ $groups->ItemsArrayRef() } );
 }
 
-eval "require RT::SavedSearch_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearch_Vendor.pm});
-eval "require RT::SavedSearch_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearch_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SavedSearches.pm b/lib/RT/SavedSearches.pm
index b69755f..bc0ee43 100644
--- a/lib/RT/SavedSearches.pm
+++ b/lib/RT/SavedSearches.pm
@@ -181,9 +181,6 @@ sub _GetObject {
     return RT::SavedSearch->new($self->CurrentUser)->_GetObject($privacy);
 }
 
-eval "require RT::SavedSearches_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearches_Vendor.pm});
-eval "require RT::SavedSearches_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SavedSearches_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search.pm b/lib/RT/Search.pm
index 5db6d2f..52b102d 100755
--- a/lib/RT/Search.pm
+++ b/lib/RT/Search.pm
@@ -140,9 +140,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search_Vendor.pm});
-eval "require RT::Search_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search/ActiveTicketsInQueue.pm b/lib/RT/Search/ActiveTicketsInQueue.pm
index 7a98344..d6204ec 100755
--- a/lib/RT/Search/ActiveTicketsInQueue.pm
+++ b/lib/RT/Search/ActiveTicketsInQueue.pm
@@ -90,9 +90,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search::ActiveTicketsInQueue_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/ActiveTicketsInQueue_Vendor.pm});
-eval "require RT::Search::ActiveTicketsInQueue_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/ActiveTicketsInQueue_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search/FromSQL.pm b/lib/RT/Search/FromSQL.pm
index 0d33ba8..d04f4ca 100644
--- a/lib/RT/Search/FromSQL.pm
+++ b/lib/RT/Search/FromSQL.pm
@@ -98,9 +98,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search::FromSQL_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/FromSQL_Vendor.pm});
-eval "require RT::Search::FromSQL_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/FromSQL_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Search/Googleish.pm b/lib/RT/Search/Googleish.pm
index 80338b0..4235b1e 100644
--- a/lib/RT/Search/Googleish.pm
+++ b/lib/RT/Search/Googleish.pm
@@ -202,9 +202,6 @@ sub Prepare  {
 }
 # }}}
 
-eval "require RT::Search::Googleish_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Googleish_Vendor.pm});
-eval "require RT::Search::Googleish_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Googleish_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SearchBuilder.pm b/lib/RT/SearchBuilder.pm
index 04b30c1..e69a914 100755
--- a/lib/RT/SearchBuilder.pm
+++ b/lib/RT/SearchBuilder.pm
@@ -345,9 +345,6 @@ sub _DoCount {
     return $self->SUPER::_DoCount(@_);
 }
 
-eval "require RT::SearchBuilder_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Vendor.pm});
-eval "require RT::SearchBuilder_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/SharedSetting.pm b/lib/RT/SharedSetting.pm
index aaa9353..a225e6c 100644
--- a/lib/RT/SharedSetting.pm
+++ b/lib/RT/SharedSetting.pm
@@ -492,9 +492,6 @@ sub ObjectsForModifying {
     return grep { $self->CurrentUserCanModify($_) } $self->_PrivacyObjects;
 }
 
-eval "require RT::SharedSetting_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SharedSetting_Vendor.pm});
-eval "require RT::SharedSetting_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/SharedSetting_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/System.pm b/lib/RT/System.pm
index f58eced..96324b5 100755
--- a/lib/RT/System.pm
+++ b/lib/RT/System.pm
@@ -191,9 +191,6 @@ sub SubjectTag {
     return grep !$seen{lc $_}++, values %$map;
 }
 
-eval "require RT::System_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/System_Vendor.pm});
-eval "require RT::System_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/System_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/URI.pm b/lib/RT/URI.pm
index 6895fc0..59e8df2 100755
--- a/lib/RT/URI.pm
+++ b/lib/RT/URI.pm
@@ -278,9 +278,6 @@ sub Resolver {
     return ($self->{'resolver'});
 }
 
-eval "require RT::URI_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI_Vendor.pm});
-eval "require RT::URI_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/URI/base.pm b/lib/RT/URI/base.pm
index 27aea98..8f50071 100755
--- a/lib/RT/URI/base.pm
+++ b/lib/RT/URI/base.pm
@@ -142,9 +142,6 @@ sub AsString {
     return $self->URI;
 }
 
-eval "require RT::URI::base_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Vendor.pm});
-eval "require RT::URI::base_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/URI/fsck_com_rt.pm b/lib/RT/URI/fsck_com_rt.pm
index b5ac230..e0f8423 100755
--- a/lib/RT/URI/fsck_com_rt.pm
+++ b/lib/RT/URI/fsck_com_rt.pm
@@ -223,9 +223,6 @@ sub AsString {
     }
 }
 
-eval "require RT::URI::fsck_com_rt_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Vendor.pm});
-eval "require RT::URI::fsck_com_rt_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Local.pm});
+RT::Base->_ImportOverlays();
 
 1;
diff --git a/lib/RT/Util.pm b/lib/RT/Util.pm
index 197ab49..7807151 100644
--- a/lib/RT/Util.pm
+++ b/lib/RT/Util.pm
@@ -112,14 +112,6 @@ sub _safe_run_child {
     return shift->();
 }
 
-eval "require RT::Util_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Util_Vendor.pm}) {
-    die $@;
-};
-
-eval "require RT::Util_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Util_Local.pm}) {
-    die $@;
-};
+RT::Base->_ImportOverlays();
 
 1;

commit c43d924bd359a128f3676b9c24d202741eb77941
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:17:49 2010 -0400

    Remove ::Generic condition/action/search abstract base classes
    deprecated in an earlier release.

diff --git a/UPGRADING b/UPGRADING
index ef70c2a..44b83b6 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -17,6 +17,16 @@ accidentally damage your database and lose data or worse.
 If you are using MySQL, please read the instructions in UPGRADING.mysql as
 well.
 
+
+
+*******
+
+UPGRADING FROM RT 3.8.x - Changes:
+
+The deprecated classes RT::Action::Generic, RT::Condition::Generic and RT::Search::Generic
+have been removed, but you shouldn't have been using them anyway. You should have been using
+RT::Action, RT::Condition and RT::Search, respectively.
+
 *******
 UPGRADING FROM 3.8.8 and earlier - Changes:
 
diff --git a/lib/RT/Action/Generic.pm b/lib/RT/Action/Generic.pm
deleted file mode 100644
index 8d4ac81..0000000
--- a/lib/RT/Action/Generic.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-# 
-# (Except where explicitly superseded by other copyright notices)
-# 
-# 
-# LICENSE:
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
-# CONTRIBUTION SUBMISSION POLICY:
-# 
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-# 
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-# 
-# END BPS TAGGED BLOCK }}}
-
-=head1 NAME
-
-  RT::Action::Generic - deprecated, see RT::Action
-
-=head1 SYNOPSIS
-
-  use RT::Action::Generic;
-
-=head1 DESCRIPTION
-
-This module is provided only for backwards compatibility.
-
-=head1 METHODS
-
-
-=cut
-
-use strict;
-use warnings;
-package RT::Action::Generic;
-use base 'RT::Action';
-
-eval "require RT::Action::Generic_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Generic_Vendor.pm});
-warn "RT::Action::Generic has become RT::Action. Please adjust your deprecated RT::Action::Generic_Vendor file at " . $INC{"RT/Action/Generic_Vendor.pm"} if !$@;
-
-eval "require RT::Action::Generic_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Generic_Local.pm});
-warn "RT::Action::Generic has become RT::Action. Please adjust your deprecated RT::Action::Generic_Local file at " . $INC{"RT/Action/Generic_Local.pm"} if !$@;
-
-1;
-
diff --git a/lib/RT/Condition/Generic.pm b/lib/RT/Condition/Generic.pm
deleted file mode 100644
index f86efa4..0000000
--- a/lib/RT/Condition/Generic.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-# 
-# (Except where explicitly superseded by other copyright notices)
-# 
-# 
-# LICENSE:
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
-# CONTRIBUTION SUBMISSION POLICY:
-# 
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-# 
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-# 
-# END BPS TAGGED BLOCK }}}
-
-=head1 NAME
-
-  RT::Condition::Generic - deprecated, see RT::Condition
-
-=head1 SYNOPSIS
-
-  use RT::Condition::Generic;
-
-=head1 DESCRIPTION
-
-This module is provided only for backwards compatibility.
-
-=head1 METHODS
-
-
-=cut
-
-use strict;
-use warnings;
-package RT::Condition::Generic;
-use base 'RT::Condition';
-
-eval "require RT::Condition::Generic_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Generic_Vendor.pm});
-warn "RT::Condition::Generic has become RT::Condition. Please adjust your RT::Condition::Generic_Vendor file at " . $INC{"RT/Condition/Generic_Vendor.pm"} if !$@;
-
-eval "require RT::Condition::Generic_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Generic_Local.pm});
-warn "RT::Condition::Generic has become RT::Condition. Please adjust your RT::Condition::Generic_Local file at " . $INC{"RT/Condition/Generic_Local.pm"} if !$@;
-
-1;
-
diff --git a/lib/RT/Search/Generic.pm b/lib/RT/Search/Generic.pm
deleted file mode 100644
index 54a1da4..0000000
--- a/lib/RT/Search/Generic.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-# 
-# COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-# 
-# (Except where explicitly superseded by other copyright notices)
-# 
-# 
-# LICENSE:
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
-# CONTRIBUTION SUBMISSION POLICY:
-# 
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-# 
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-# 
-# END BPS TAGGED BLOCK }}}
-
-=head1 NAME
-
-  RT::Search::Generic - deprecated, see RT::Search
-
-=head1 SYNOPSIS
-
-  use RT::Search::Generic;
-
-=head1 DESCRIPTION
-
-This module is provided only for backwards compatibility.
-
-=head1 METHODS
-
-
-=cut
-
-use strict;
-use warnings;
-package RT::Search::Generic;
-use base 'RT::Search';
-
-eval "require RT::Search::Generic_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Generic_Vendor.pm});
-warn "RT::Search::Generic has become RT::Search. Please adjust your RT::Search::Generic_Vendor file at " . $INC{"RT/Search/Generic_Vendor.pm"} if !$@;
-
-eval "require RT::Search::Generic_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Generic_Local.pm});
-warn "RT::Search::Generic has become RT::Search. Please adjust your RT::Search::Generic_Local file at " . $INC{"RT/Search/Generic_Local.pm"} if !$@;
-
-1;
-
diff --git a/t/00-compile.t b/t/00-compile.t
index 7257c3e..1a89e77 100644
--- a/t/00-compile.t
+++ b/t/00-compile.t
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-use RT::Test nodata => 1, tests => 34;
+use RT::Test nodata => 1, tests => 31;
 
 require_ok("RT");
 require_ok("RT::Test");
@@ -24,15 +24,12 @@ require_ok("RT::GroupMembers");
 require_ok("RT::ScripActions");
 require_ok("RT::Transactions");
 require_ok("RT::ScripCondition");
-require_ok("RT::Action::Generic");
+require_ok("RT::Action");
 require_ok("RT::ScripConditions");
-require_ok("RT::Search::Generic");
-require_ok("RT::Search::Generic");
-require_ok("RT::Search::Generic");
-require_ok("RT::Search::Generic");
+require_ok("RT::Search");
 require_ok("RT::Action::SendEmail");
 require_ok("RT::CachedGroupMembers");
-require_ok("RT::Condition::Generic");
+require_ok("RT::Condition");
 require_ok("RT::Interface::Web");
 require_ok("RT::SavedSearch");
 require_ok("RT::SavedSearches");

commit 379bb92dee33e1ae8dca1da31840e2916986f062
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:40:52 2010 -0400

    Remove the overlay craziness from RT.pm.in

diff --git a/lib/RT.pm.in b/lib/RT.pm.in
index 4722e38..13a0cd5 100755
--- a/lib/RT.pm.in
+++ b/lib/RT.pm.in
@@ -701,9 +701,7 @@ L<DBIx::SearchBuilder>
 
 =cut
 
-eval "require RT_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT_Vendor.pm});
-eval "require RT_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT_Local.pm});
+require RT::Base;
+RT::Base->_ImportOverlays();
 
 1;

commit 64bed9aa3ed0bd24346d05f531181e52f643129a
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Aug 18 13:45:18 2010 -0400

    Move the prose description of the _Overlay mechanism to the styleguide.

diff --git a/lib/RT/ACE.pm b/lib/RT/ACE.pm
index 271405d..bb16030 100755
--- a/lib/RT/ACE.pm
+++ b/lib/RT/ACE.pm
@@ -288,24 +288,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ACE_Overlay, RT::ACE_Vendor, RT::ACE_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ACL.pm b/lib/RT/ACL.pm
index 0e14a0c..a250b0f 100755
--- a/lib/RT/ACL.pm
+++ b/lib/RT/ACL.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ACL_Overlay, RT::ACL_Vendor, RT::ACL_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attachment.pm b/lib/RT/Attachment.pm
index 137830c..a8b908e 100755
--- a/lib/RT/Attachment.pm
+++ b/lib/RT/Attachment.pm
@@ -356,24 +356,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attachment_Overlay, RT::Attachment_Vendor, RT::Attachment_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attachments.pm b/lib/RT/Attachments.pm
index 733e02e..5cb7939 100755
--- a/lib/RT/Attachments.pm
+++ b/lib/RT/Attachments.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attachments_Overlay, RT::Attachments_Vendor, RT::Attachments_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attribute.pm b/lib/RT/Attribute.pm
index ab4d5ff..a8de8b6 100644
--- a/lib/RT/Attribute.pm
+++ b/lib/RT/Attribute.pm
@@ -309,24 +309,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attribute_Overlay, RT::Attribute_Vendor, RT::Attribute_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Attributes.pm b/lib/RT/Attributes.pm
index 06c8b49..57833df 100644
--- a/lib/RT/Attributes.pm
+++ b/lib/RT/Attributes.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Attributes_Overlay, RT::Attributes_Vendor, RT::Attributes_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CachedGroupMember.pm b/lib/RT/CachedGroupMember.pm
index e708637..018458c 100755
--- a/lib/RT/CachedGroupMember.pm
+++ b/lib/RT/CachedGroupMember.pm
@@ -242,24 +242,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CachedGroupMember_Overlay, RT::CachedGroupMember_Vendor, RT::CachedGroupMember_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CachedGroupMembers.pm b/lib/RT/CachedGroupMembers.pm
index 4a02b4b..701da22 100755
--- a/lib/RT/CachedGroupMembers.pm
+++ b/lib/RT/CachedGroupMembers.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CachedGroupMembers_Overlay, RT::CachedGroupMembers_Vendor, RT::CachedGroupMembers_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomField.pm b/lib/RT/CustomField.pm
index 95f58b7..549388b 100755
--- a/lib/RT/CustomField.pm
+++ b/lib/RT/CustomField.pm
@@ -378,24 +378,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomField_Overlay, RT::CustomField_Vendor, RT::CustomField_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomFieldValue.pm b/lib/RT/CustomFieldValue.pm
index 0a1eb15..64d222f 100755
--- a/lib/RT/CustomFieldValue.pm
+++ b/lib/RT/CustomFieldValue.pm
@@ -278,24 +278,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomFieldValue_Overlay, RT::CustomFieldValue_Vendor, RT::CustomFieldValue_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomFieldValues.pm b/lib/RT/CustomFieldValues.pm
index e8464c7..921d444 100755
--- a/lib/RT/CustomFieldValues.pm
+++ b/lib/RT/CustomFieldValues.pm
@@ -115,24 +115,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomFieldValues_Overlay, RT::CustomFieldValues_Vendor, RT::CustomFieldValues_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/CustomFields.pm b/lib/RT/CustomFields.pm
index 96027fb..1c3a854 100755
--- a/lib/RT/CustomFields.pm
+++ b/lib/RT/CustomFields.pm
@@ -115,24 +115,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::CustomFields_Overlay, RT::CustomFields_Vendor, RT::CustomFields_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index 8600861..a947c5b 100755
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -242,24 +242,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Group_Overlay, RT::Group_Vendor, RT::Group_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/GroupMember.pm b/lib/RT/GroupMember.pm
index 6616f2f..161031e 100755
--- a/lib/RT/GroupMember.pm
+++ b/lib/RT/GroupMember.pm
@@ -173,24 +173,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::GroupMember_Overlay, RT::GroupMember_Vendor, RT::GroupMember_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/GroupMembers.pm b/lib/RT/GroupMembers.pm
index 282e2a6..0b0e329 100755
--- a/lib/RT/GroupMembers.pm
+++ b/lib/RT/GroupMembers.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::GroupMembers_Overlay, RT::GroupMembers_Vendor, RT::GroupMembers_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Groups.pm b/lib/RT/Groups.pm
index 86f803d..84a6819 100755
--- a/lib/RT/Groups.pm
+++ b/lib/RT/Groups.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Groups_Overlay, RT::Groups_Vendor, RT::Groups_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Link.pm b/lib/RT/Link.pm
index 6eb8c98..4eb95a8 100755
--- a/lib/RT/Link.pm
+++ b/lib/RT/Link.pm
@@ -286,24 +286,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Link_Overlay, RT::Link_Vendor, RT::Link_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Links.pm b/lib/RT/Links.pm
index 06f64e1..41ed1b8 100755
--- a/lib/RT/Links.pm
+++ b/lib/RT/Links.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Links_Overlay, RT::Links_Vendor, RT::Links_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomField.pm b/lib/RT/ObjectCustomField.pm
index 353fd56..9cf915e 100644
--- a/lib/RT/ObjectCustomField.pm
+++ b/lib/RT/ObjectCustomField.pm
@@ -255,24 +255,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomField_Overlay, RT::ObjectCustomField_Vendor, RT::ObjectCustomField_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomFieldValue.pm b/lib/RT/ObjectCustomFieldValue.pm
index c8b2fbd..c0a7a3b 100644
--- a/lib/RT/ObjectCustomFieldValue.pm
+++ b/lib/RT/ObjectCustomFieldValue.pm
@@ -393,24 +393,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomFieldValue_Overlay, RT::ObjectCustomFieldValue_Vendor, RT::ObjectCustomFieldValue_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomFieldValues.pm b/lib/RT/ObjectCustomFieldValues.pm
index d7f8764..0b3aaae 100644
--- a/lib/RT/ObjectCustomFieldValues.pm
+++ b/lib/RT/ObjectCustomFieldValues.pm
@@ -112,24 +112,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomFieldValues_Overlay, RT::ObjectCustomFieldValues_Vendor, RT::ObjectCustomFieldValues_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ObjectCustomFields.pm b/lib/RT/ObjectCustomFields.pm
index e0803da..5fb3b29 100644
--- a/lib/RT/ObjectCustomFields.pm
+++ b/lib/RT/ObjectCustomFields.pm
@@ -112,24 +112,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ObjectCustomFields_Overlay, RT::ObjectCustomFields_Vendor, RT::ObjectCustomFields_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Principal.pm b/lib/RT/Principal.pm
index f7b3b27..601ac74 100755
--- a/lib/RT/Principal.pm
+++ b/lib/RT/Principal.pm
@@ -196,24 +196,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Principal_Overlay, RT::Principal_Vendor, RT::Principal_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Principals.pm b/lib/RT/Principals.pm
index 18768eb..665fa49 100755
--- a/lib/RT/Principals.pm
+++ b/lib/RT/Principals.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Principals_Overlay, RT::Principals_Vendor, RT::Principals_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index 15b7a65..140fe18 100755
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -355,24 +355,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Queue_Overlay, RT::Queue_Vendor, RT::Queue_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Queues.pm b/lib/RT/Queues.pm
index 5b56fa6..bb6cb87 100755
--- a/lib/RT/Queues.pm
+++ b/lib/RT/Queues.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Queues_Overlay, RT::Queues_Vendor, RT::Queues_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Scrip.pm b/lib/RT/Scrip.pm
index fad74c0..a2d0b8f 100755
--- a/lib/RT/Scrip.pm
+++ b/lib/RT/Scrip.pm
@@ -484,24 +484,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Scrip_Overlay, RT::Scrip_Vendor, RT::Scrip_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripAction.pm b/lib/RT/ScripAction.pm
index 70956ad..179ed37 100755
--- a/lib/RT/ScripAction.pm
+++ b/lib/RT/ScripAction.pm
@@ -263,24 +263,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripAction_Overlay, RT::ScripAction_Vendor, RT::ScripAction_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripActions.pm b/lib/RT/ScripActions.pm
index 900b9c2..182dfa3 100755
--- a/lib/RT/ScripActions.pm
+++ b/lib/RT/ScripActions.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripActions_Overlay, RT::ScripActions_Vendor, RT::ScripActions_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripCondition.pm b/lib/RT/ScripCondition.pm
index f607cc6..58b0761 100755
--- a/lib/RT/ScripCondition.pm
+++ b/lib/RT/ScripCondition.pm
@@ -286,24 +286,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripCondition_Overlay, RT::ScripCondition_Vendor, RT::ScripCondition_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/ScripConditions.pm b/lib/RT/ScripConditions.pm
index 1cd6551..99ef86f 100755
--- a/lib/RT/ScripConditions.pm
+++ b/lib/RT/ScripConditions.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::ScripConditions_Overlay, RT::ScripConditions_Vendor, RT::ScripConditions_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Scrips.pm b/lib/RT/Scrips.pm
index 54fa5e9..d4c99f7 100755
--- a/lib/RT/Scrips.pm
+++ b/lib/RT/Scrips.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Scrips_Overlay, RT::Scrips_Vendor, RT::Scrips_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/StyleGuide.pod b/lib/RT/StyleGuide.pod
index 84ccb89..8aa0c8e 100755
--- a/lib/RT/StyleGuide.pod
+++ b/lib/RT/StyleGuide.pod
@@ -892,6 +892,22 @@ There are some legacy fields that did not follow this rule, namely
 C<ACL.PrincipalId>, C<GroupMembers.GroupId> and C<Attachments.TransactionId>,
 but new tables are expected to be consistent.
 
+
+=head1 EXTENDING RT CLASSES
+
+=head2 The Overlay mechansim
+
+RT's classes allow "overlay" methods to be placed into files named Filename_Vendor.pm and Filename_Local.pm
+_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.
+
+These overlay files can contain new subs or subs to replace existing subs in this module.
+
+Each of these files should begin with the line
+
+   no warnings qw(redefine);
+
+so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
+
 =head1 TO DO
 
 Talk about DBIx::SearchBuilder
diff --git a/lib/RT/Template.pm b/lib/RT/Template.pm
index 026f765..1a283b5 100755
--- a/lib/RT/Template.pm
+++ b/lib/RT/Template.pm
@@ -347,24 +347,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Template_Overlay, RT::Template_Vendor, RT::Template_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Templates.pm b/lib/RT/Templates.pm
index bc358f7..7b40b62 100755
--- a/lib/RT/Templates.pm
+++ b/lib/RT/Templates.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Templates_Overlay, RT::Templates_Vendor, RT::Templates_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Ticket.pm b/lib/RT/Ticket.pm
index 9e9cfda..e21e504 100755
--- a/lib/RT/Ticket.pm
+++ b/lib/RT/Ticket.pm
@@ -646,24 +646,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Ticket_Overlay, RT::Ticket_Vendor, RT::Ticket_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index d98c95c..6b5e92b 100755
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Tickets_Overlay, RT::Tickets_Vendor, RT::Tickets_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Transaction.pm b/lib/RT/Transaction.pm
index e9ae434..93cff2f 100755
--- a/lib/RT/Transaction.pm
+++ b/lib/RT/Transaction.pm
@@ -402,24 +402,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Transaction_Overlay, RT::Transaction_Vendor, RT::Transaction_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Transactions.pm b/lib/RT/Transactions.pm
index 444ce53..dc0a2d1 100755
--- a/lib/RT/Transactions.pm
+++ b/lib/RT/Transactions.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Transactions_Overlay, RT::Transactions_Vendor, RT::Transactions_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/User.pm b/lib/RT/User.pm
index c359595..53729b5 100755
--- a/lib/RT/User.pm
+++ b/lib/RT/User.pm
@@ -838,24 +838,4 @@ sub _CoreAccessible {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::User_Overlay, RT::User_Vendor, RT::User_Local
-
-=cut
-
-
 1;
diff --git a/lib/RT/Users.pm b/lib/RT/Users.pm
index 025767f..a4c3f66 100755
--- a/lib/RT/Users.pm
+++ b/lib/RT/Users.pm
@@ -101,24 +101,4 @@ sub NewItem {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows "overlay" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-RT::Users_Overlay, RT::Users_Vendor, RT::Users_Local
-
-=cut
-
-
 1;
diff --git a/sbin/factory b/sbin/factory
index 4d19757..c475632 100755
--- a/sbin/factory
+++ b/sbin/factory
@@ -483,26 +483,6 @@ sub MagicImport {
 
 RT::Base->_ImportOverlays();
 
-
-=head1 SEE ALSO
-
-This class allows \"overlay\" methods to be placed
-into the following files _Overlay is for a System overlay by the original author,
-_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.  
-
-These overlay files can contain new subs or subs to replace existing subs in this module.
-
-Each of these files should begin with the line 
-
-   no warnings qw(redefine);
-
-so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
-
-@{[$class]}_Overlay, @{[$class]}_Vendor, @{[$class]}_Local
-
-=cut
-
-
 1;
 ";
 

-----------------------------------------------------------------------


More information about the Rt-commit mailing list