started using Eigen library
kernel functions
use std::make_unique
use std::regex instead of boost::regex