added knn and cross validation