added powi function