added power function