through type system