adding type-reachability mechanisms
merged