revised type system