use boost mpl for compile time constants