added an opaque base type