some type system implementation