some optimization work...