return false instead of throwing