added cross validation and split out test/train sets