To maintain backwards compatibility (and because I think it's an OK design choice), keep the widget concept (a single module can produce multiple widgets).
Put tests into directory structure equivalent to that of the code itself, for better separation (hopefully)