add factorial module and modify the geoencoding feature