And why not just allow imaginary points at instantiation and then the calculation routines need not be modified. Or perhaps a decorator can be used that tests that all args have non-imaginary points? Just ideas...not sure of the merits.