I upgraded my application from TurboGears 2.1 to 2.3.4, and from ToscaWidgets 1 to 2. I was able to login to my app. But one custom widget I've created like this: class AdminBody(TextField): ... served through a controller like this: tmpl_context.body = admin_body( finish_work=False, totalToBill = format_precision(totalToBill,2), projectsToBillGrid = projectsToBillGrid, add_work_form = add_work_form, add_work_form_child_args = dict( start=dict(default=datetime.now()) ), time_allocation_grid = time_allocation_grid, period_grids = period_grids ) when called in a template like this: ${tmpl_context.body} outputs this: <class 'tw2.core.params.AdminBody_s_s'> If instead I call it in a template like this: ${tmpl_context.body.display()} it outputs: IOError: [Errno 2] No such file or directory: '\n<div xmlns="http://www.w3.org/1999/xhtml"\n xmlns:py="http://genshi.edgewall.org/"\n class="${css_class}"\n id="${id}"\n >\n ... which is the unrendered content of the template = '...' string of my custom widget. How can I get the widget to render properly? Tim