initial thoughts on type instantiation rule