Instead of mucking with the widget factory, you should attempt to prevent the other widget from being registered at all, by calling remove_filter() at the appropriate time. Then, register your own widget with the old widget's ID. -- http://scribu.net