Added arbitary precision support