add integer? float? function, fix some bug