fix bug & make enhancement