don't bother with core_kernel
implement matrix by matrix multiplication