add kmp
rename it