hate that I had to keep this cast. I'm open to mechanisms for rationalizing these types signed vs. unsigned-ness... apparently sizeof() results in return type of size_t, which is always unsigned... so things that interact with sizeof() will end up being unsigned.