more cleanup, allowing value transforms for each widget