updated SVM with kernels and reference