Wow, thanks BrentDax, that's a very thorough answer. I'm going to have to look at your code (and look up what some of the syntax means) a bit more, but the reason behind the division of the code this way makes sense, which is a good sign. The only other thing I notice is that if I'm going to adopt Perl 6's OO syntax I'm going to spend a lot of time on the Shift key :-)