This makes the user-facing type only take the node member pointer, and lets the compiler figure out the other needed types from that.