always return int
check type, assertgreaterthan