Hackety hack: refactor into widget classes and Borang::BaseEnv