added isFinite() method