use latest comm and cleanup generics use