This is some loose scrabbling made by TobiX, they might eventually be relevant for 2.1. INTERFACES, in general should: - provide the user (client?) with a list of possible actions (methods). - let the user execute those actions (methods). - Return information to the user/client. There are two kind of actions/methods: - Information retrieval - Transactions For the first, I think the best thing is to just provide a lot of methods for it in the libraries, and let it be an Interface Design Issue what to show and how to show it. For the second, I think we can win in the long run on having a generalized methods for - listing transaction types. - creating & committing transactions. ..with the possibility of just deploying new custom-developed modules when new transaction types are needed. $RT::TransactionTypes ...and... %RT::TransactionTypes - global object which contains all TransactionTypes - used by all UIs to create menues of possible (user) actions (one TransactionType is a user action) The UIs should call sth like $Ticket->AddTransaction($TransactionName), which should be equivalent with i.e. $Ticket->Correspond when $TransactionName is 'Correspond' (AUTOLOAD should call the do-sub if exists $RT::TransactionTypes{$TransactionName}) The RT::Ticket::AddTransaction will create a new transaction of the right TransactionClass (maybe via a sub RT::TransactionTypes::NewTransaction). Then $Transaction->do is called. TransactionType->do initializes a new object of the right TransactionClass, and