type constraint as lists