But before we get there I want to take this step back and basically tell you that in any programming language there are really three fundamental ways to build compound types out of other types that are part of the pieces and all though these aren't the standard names I'm gonna call them each of one of and self reference. 