[eluser]dcheslow[/eluser]
There is nothing particularly special about MY_Controller (or any other controller), they are just subclasses of Controller. So you can simply create a class that inherits from Controller and then make more classes which inherit from your subclass. In fact, having a 'base controller' allows you to consolidate lots of similar code found in all your controllers.
A simple example: almost all my controllers need to create timestamps (when a record was created, edited, deleted, etc.), so I have a method in my BaseController class to create a timestamp in MySQL compatible format. This may prompt the question "why not just use 'now()' in the insert statement?" Answer: If I'm inserting multiple records (for example, a base record and multiple related records) then I'd like them all to have the same timestamp... but the inserts might span a second/minute/hour boundary. So I create a single timestamp in PHP and use it for all the related inserts.
A more complex example: my BaseController has a save() method which tries to read a matching record from the database and then calls either insert() or update(), which are implemented in each BaseController subclass. Note that, because of the way that CI dispatches controller/actions, all the controller classes need to live in the Controllers directory (not subdirectories). This is a small price to pay.
=dave=