added exponentiation functionality