throw earlier
use semantic error