replaced Eigen add-on for value type with metaprogram