some optimization; less C, more C++