use ValueError instead of TypeError