add KMP