It should be templated for different data types (int,double,...) and different dimensions (1d,2d,3d)
It should be templated for different data types (int,double,...) and different dimensions (1d,2d,3d)