add some my old library code
refine widget name and format