generated type system