-need recheck(dirty coding)