code restructure
m