use latest core and cleanup generics use