add widget behavior