provides ordering by precedence for type-check types