widget modularization