Widget composition, fix bugs