Uses bitshift for pow2 instead of templated struct