Implementing type stuff for most of the communication intrinsics and splitting the intrinsics out a bit