enhancement, must init the variables