typesmart constructors may not call other typesmart constructors recursively
lexical sorts
check for illegal argument
do not overwrite annotations
improve error logging
typesmart constructors for base language