type->semantics, thanks lance