We have been avoiding using typedefs. It makes the code harder to read.  (this is part of the kernel style as well).  Use struct type_name throughout.

Also Integral doesn't seem like a great name for this.