basic type and sub type