added specialization for integral types