Got it.   Thanks.  What about other type besides BSR, CSR and CSC?  For your comment, "for the other types you probably want to convert to one of these first."   Do you think we should convert implicitly it for them or we should throw an exception to have them convert it before calling the method?  I think the users should be aware of the cost of conversion so they can decide using  BSR, CSR and CSC before using the power() function.