modified lots of codes...