add incomplete type system